__getattriute__

Posted cong12586

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__getattriute__相关的知识,希望对你有一定的参考价值。

# class Foo:
#     def __init__(self,x):
#         self.x = x
#     def __getattr__(self,item):
#         print("__getattr__")
#         # return self.__dict__[item]
#     def printer(self):
#         print("lsdajfl")
#
# f1 = Foo(10)
# print(f1.x)
# f1.abc # 访问不存在的属性,触发__getattr__
# f1.printer()
# class Foo1:
#     def __init__(self,x):
#         self.x = x
#     def __getattribute__(self,item):
#         print("__getattribute__")
# # 由上边的例子我们可以看出,不管属性存在不存在都会执行
# # __getattribute__
# f1 = Foo1(10)
# print(f1.x)
# print(f1.abc)

class Foo2:
    def __init__(self,x):
        self.x = x
    def __getattr__(self,item):
        print(执行__getattr__)
    def __getattribute__(self,item):
        print("执行__getattribute__")
    def printer(self):
        print(123)

# 当两个都存在的时候,只会执行__getattribute__
# 而不执行__getattr__
f2 = Foo2(20)
f2.x
f2.xxx
# f2.printer()
#  当我们修改了__getattribute__方法时,本来有的方法也无法执行了

 

以上是关于__getattriute__的主要内容,如果未能解决你的问题,请参考以下文章

python __getattr__

__getattr__,settr

python 类中__getattr__的使用

Python的__getattr__和__getattribute__

python中__getattr__和__getattribute__区别

为啥我不能将 __getattr__ 与 Django 模型一起使用?