我正在使用一個Javascript風格的字典,如討論here。執行:Python點符號字典斷字連字符?
class DotDict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
我用這個結構有一段時間沒有問題,但最近需要一個字典,一個連字符鍵,這樣的:
foo = DotDict()
foo.a = 'a' #Business as usual
foo.a-b = 'ab' #Broken
分配到foo.ab的結果:
SyntaxError: can't assign to operator
由於' - '被看作是減號操作而不是鍵名稱的一部分,因此中斷。是否有另一種方式來創建一個點式成員訪問字典?
有可能與SETATTR/GETATTR黑客做到這一點,但你不想這樣做,人們將讀取你的代碼不要你也這樣做。 (當然,你也不會得到點式會員訪問權) – zmo
-1,因爲這不是有效的注意事項。 – jsbueno