asker160 发表于 2016-11-29 10:20

python的__getattribute__在访问属性的时候没有自动调用

我期待一个属性被访问的时候,其__getattribute__会被访问。一个类属性被访问的时候,其__get__会被访问。

于是我有下面的代码:
class D:
def __getattribute__(s,*a,**ka):
    print "__getattribute__"
    return object.__getattribute__(s,*a,**ka)

def __getattr__(s,name):
    print "__getattr__"
    return name

def __get__(s,instance,owner):
    print "__get__"
    return s
a='abc'

class C2(object):
    d=D()

d=D()
c2=C2()
print d.a
print d.zzz但是输出是:
abc
__getattr__
zzz没有我期待的内容。这是为何。

asker160 发表于 2016-11-29 13:52

自己知道了,要么class D(object) 新风格的类,要么在文件头部__metaclass__=type,让所有的类都是新风格的。默认向后兼容是老风格的类,不支持__getattribute__内建函数
页: [1]
查看完整版本: python的__getattribute__在访问属性的时候没有自动调用