我使用的是一个Javascript风格的字典,如前所述here。实施:
class DotDict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
我使用这种结构有一段时间没有问题,但最近需要一个带连字符键的字典,如下所示:
^{pr2}$分配给foo.a-b会导致:
SyntaxError: can't assign to operator
这会中断,因为“-”被视为减号运算,而不是键名的一部分。有没有其他方法可以创建一个具有点样式成员访问权限的字典?在
我不知道你为什么感到惊讶。在JavaScript中,同样的表达式也会抛出一个错误:
因此,就像在JavaScript中一样,回到:
^{pr2}$这是不可能直接做到的。最好的方法是允许混合访问-就像你已经做的那样-并使用它。或者,也可以使用
setattr()/getattr()
,作为Not_a_Golfer suggests。在a-b
不是Python中的有效标识符。有效标识符可以由字母、数字和下划线(_
)组成。变量名中的任何其他字符都是非法的。在没有办法使用不是有效标识符的键进行点式访问。在
相关问题 更多 >
编程相关推荐