Python属性的查询优先级

ε祈祈猫儿з 提交于 2019-12-06 12:49:24

在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__函数

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!