Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 继承自dict的类内定义为何在定义属性方面存在差异?_Python - Fatal编程技术网

Python 继承自dict的类内定义为何在定义属性方面存在差异?

Python 继承自dict的类内定义为何在定义属性方面存在差异?,python,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': '

在从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'}

出于同样的原因:

x = {}
x.foo = 34
不起作用
dict
s不能通过定义属性来工作

x.attr2
# => 'unseen'