1
类的顶级属性,我想了解以下情况:在哪里存储在Python
>>> class Test:
... a = 1
...
>>> x = Test()
>>> x.__dict__
{}
>>> x.a
1
>>> x.__dict__
{}
>>> x.a = 1
>>> x.__dict__
{'a': 1}
哪里a
属性存储在开始和怎么就变成了__dict__
可见只有在分配后?
为什么'x.a = 1'创建实例属性而不是改变类属性? – Mkoch
如果我在类中说'a = []',那么'x.a.append(2)'会改变class属性。如果现在我实例化一个新实例,让我们说'y','y.a'也是'[2]'。 – Mkoch
'append'不会更改类属性,它会更改由class属性引用的对象。而且每个类的实例都有相同的对象,所以对象的内容也是一样的。 – Daniel