我想在 Python 中使用 += 符号来更新类似 dict 的对象。我想拥有与 dict.update 方法相同的行为。这是我的类(class)(带有“.”访问权限的字典):
class sdict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
我试过:
__iadd__ = dict.update
和:
def __iadd__(self, other):
self.update(other)
return self
但这些都不起作用。 (第一个破坏了原来的字典,第二个产生了SyntaxError)
更新:
第二个定义确实有效。它对我不起作用,因为我忘记了 def
。第一个不起作用,因为 dict.update 返回 None。
最佳答案
我认为你缺少的只是一个 def:
class sdict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
def __iadd__(self, other):
self.update(other)
return self
>>> a = sdict()
>>> a.b = 3
>>> a
{'b': 3}
>>> a.b
3
>>> a['b']
3
>>> a += {'fred': 3}
>>> a
{'b': 3, 'fred': 3}
关于python - 在 python 中为映射类型重载 +=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022405/