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没有我期待的内容。这是为何。
自己知道了,要么class D(object) 新风格的类,要么在文件头部__metaclass__=type,让所有的类都是新风格的。默认向后兼容是老风格的类,不支持__getattribute__内建函数
页:
[1]