zoukankan      html  css  js  c++  java
  • day26 Python __getattribute__

    __getattr__#不存在的属性访问,触发__getattr__

    class Foo:
        def __init__(self,x):
            self.x=x
        def __getattr__(self, item):
            print('执行的是我')
    f1=Foo(10)
    print(f1.x)
    f1.xxx
    
    结果:
    10
    执行的是我
    

     __getattribute__#无论属性存在与否都触发__getattribute__

    class Foo:
        def __init__(self,x):
            self.x=x
            print('asdsad')
    
        def __getattribute__(self, item):
            print('不管是否存在,我都会执行')
    f1=Foo(10)
    f1.x
    f1.xxx
    
    结果:
    asdsad
    不管是否存在,我都会执行
    不管是否存在,我都会执行
    

     __getattribute__和__getattr__结合

    class Foo:
        def __init__(self,x):
            self.x=x
        def __getattr__(self, item):
            print('执行的是我')
        def __getattribute__(self, item):
            print('不管是否存在,我都会执行')
            raise AttributeError('抛出异常了')
    
    f1=Foo(10)
    f1.xc
    
    结果:
    不管是否存在,我都会执行
    执行的是我
    #当__getattribute__与__getattr__同时存在,只会执行__getattrbute__,除非__getattribute__在执行过程中抛出异常AttributeError
    
  • 相关阅读:
    23种设计模式
    设计模式中类的关系
    简单工厂模式
    SQL正则表达式
    C#中各种计时器
    C# List 排序
    常见名词解释
    PetaPoco入门
    jQuery UI Dialog
    c# winform 获取当前程序运行根目录
  • 原文地址:https://www.cnblogs.com/charon2/p/10444215.html
Copyright © 2011-2022 走看看