我试图了解用户定义类的__setattr__
方法在python 3中设置为对象的位置,我陷入了陷阱。
因为当我输入时,我对属性的理解就会出现:
x.y = z
在python代码中。会发生什么事情是x的__setattr__
函数被调用了密钥' y'和z的值。
但后来我写了这段代码
#!/usr/local/bin/python3
obj = object()
class A(object):
pass
a = A()
a.tmp = 123456
obj.tmp = 123456
此代码在最后一行崩溃并出现错误
Traceback (most recent call last):
File "main.py", line 11, in
obj.tmp = 123456
AttributeError: 'object' object has no attribute 'tmp'
我预计第10行和第11行的行为相同,因为我没有覆盖A中对象的__setattr__
方法。
为什么对象和A之间的行为会发生变化?