我有一个继承自内置类的dict
类。它曾经看起来有点像:
class AwesomeDictionary(dict):
def __init__(self, *args, **args):
self['hello'] = 'world'
i = {}
dict.__init__(i, *args, **kargs)
self.update(i)
我用一个临时字典来实现它,因为我认为__init__
会创建一个全新的字典或至少清除它。
我最近才意识到你可以在 Python 解释器中毫无问题地做这样的事情:
f = {'hi':56, '67':89}
dict.__init__(f, **{'h':67})
print f
#You get: {'67': 89, 'h': 67, 'hi': 56}
如果您指定相同的字段:
f = {'hi':56, '67':89}
dict.__init__(f, **{'hi':34})
print f
#You get: {'67': 89, 'hi': 34}
因此,在这种情况下,它的行为似乎__init__
与.update
.
出现这种情况有什么特别的原因吗?我可以期望这在实现和版本之间保持一致吗?
在类似的说明中,.update
除了代码的清晰度和可读性之外,调用常规字典是否有任何目的(请注意,这是一个很好的理由,我只是想知道这是否是唯一的原因)?
哦,我知道我可以保持原样并进行更新以使您安心,但是如果您两次执行相同的操作,则会感觉效率很低。
如果这是一个愚蠢的问题,我深表歉意。
谢谢你的时间。