VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • __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__方法时,本来有的方法也无法执行了
复制代码

 来源:https://www.cnblogs.com/cong12586/p/11371942.html



相关教程