【发布时间】:2012-05-21 10:36:27
【问题描述】:
我正在使用here 所讨论的 Javascript 风格的字典。实施:
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.a-b 会导致:
SyntaxError: can't assign to operator
这会中断,因为“-”被视为减号操作,而不是键名的一部分。还有其他方法可以创建具有点式成员访问权限的字典吗?
【问题讨论】:
-
可以使用 setattr/getattr hacks 来实现,但是您不想这样做,并且会阅读您的代码的人也不希望您这样做。 (当然你不会获得点式成员访问权限)
-
-1 因为这在javascript中也无效。
标签: python