在下面的示例中,x
即使x
存在于对象的插槽中,也可以从对象的插槽中访问属性__dict__
(这不是典型或可能有用的情况,但我很好奇):
>>> class C(object):
... __slots__ = 'x'
...
>>> class D(C):
... pass
...
>>> obj = D()
>>> obj.x = 'Stored in slots'
>>> obj.__dict__
{}
>>> obj.__dict__['x'] = 'stored in __dict__'
>>> obj.x
'Stored in slots'
这种访问顺序(插槽优先)是记录在案的行为吗?或者只是一个实现细节?