zoukankan      html  css  js  c++  java
  • __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__方法时,本来有的方法也无法执行了
  • 相关阅读:
    Mysql初识
    滚动监听实例
    利用div显示隐藏实现的分页效果
    animation动画汇总(一阶段项目)
    css3动画效果
    animate动画基础
    切换式轮播方式
    Ajax基础
    Jquery日历编写小练习
    [转]好文章:Android的AlertDialog详解
  • 原文地址:https://www.cnblogs.com/cong12586/p/11371942.html
Copyright © 2011-2022 走看看