在继承自dict的类定义中,为什么定义属性会有区别?

时间:2010-08-05 23:21:40

标签: python

在从dict继承的类中,为什么定义属性的两种方法不会产生相同的结果?为什么我会看到attr1而不是attr2?

class my_dict(dict):
   def __init__(self):
       dict.__init__(self)
       self['attr1'] = 'seen'
       setattr(self, 'attr2', 'unseen')

In [1]: x = my_dict()

In [2]: x
Out[2]: {'attr1': 'seen'}

2 个答案:

答案 0 :(得分:1)

出于同样的原因:

x = {}
x.foo = 34

不起作用。 dict通过定义属性不起作用。

答案 1 :(得分:1)

x.attr2
# => 'unseen'