• 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
    
  • 相关阅读:
    TCP三次握手与四次挥手
    centos7快捷键
    关于学习简单讲解的个人观点
    继承与派生
    python封装
    python之面向对象编程
    python之re模块
    python之hashlib、suprocess模块
    python之shelve、xml、configparser模块
    python之json、pickle模块
  • 原文地址:https://www.cnblogs.com/charon2/p/10444215.html
Copyright © 2020-2023  润新知