python:用户定义的类在哪里覆盖对象的__setattr__方法?

时间:2014-07-29 08:28:22

标签: python

我试图了解用户定义类的__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之间的行为会发生变化?

0 个答案:

没有答案