如果我制作这样的类实例
class MyClass(object):
pass
x = MyClass()
然后我可以在 x 上设置属性,如下所示:
x.myAttr = 1
或者x.__setattr__('myAttr', 1)
但是,如果我做一个 dict
d = {}
我无法在其上设置属性。例如,如果我这样做
d.__setattr__('myAttr', 1)
我得到错误“'dict'对象没有属性'myAttr'”如果我尝试也会发生同样的事情
d.myAttr = 1
我注意到在 x.myAttr = 1 的情况下,实际发生的是
x.__dict__
用新密钥更新,所以它必须是
d.__setattr__
不起作用,因为 d 没有
d.__dict__
仅仅因为 d是一个字典。如果有人能彻底解释这里发生了什么,我将不胜感激。
所有 python 对象都有.__dict__
吗?
为什么我尝试调用会d.__setattr__
导致错误提示该属性不存在?
是否有我应该知道的内置类型的特定层次结构?一个简单的参考将不胜感激。
蟒蛇2.6.4
Windows XP 专业版 x64 SP2