在Python中,当你访问对象的一个属性(也就是写出类似obj.xxx的代码时),访问的优先级从高到低如下所示:
1.__getattribute__
这是优先级最高的函数,所有对属性的访问必先访问它。举个例子:
class Obj(object): def __init__(self, weight, price): self.weight = weight self.price = price def __getattribute__(self, name): print name return 2 obj = Obj(1,2) print obj.__getattribute__ print obj.weight
得到的输出为:
__getattribute__ 2 weight 2
可以看到,哪怕是访问__getattribute__本身也要先经过__getattribute__函数