• 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
    
  • 相关阅读:
    cogs 775. 山海经
    [HZOI 2016][Tyvj 1729]文艺平衡树 这道题我真是哭了,调了一下午,一晚上
    几种平衡树
    bzoj1124 [POI2008]枪战Maf
    [Usaco2007 Open]Fliptile 翻格子游戏
    团队冲刺08
    团队冲刺07
    团队冲刺06
    团队冲刺05
    团队冲刺04
  • 原文地址:https://www.cnblogs.com/charon2/p/10444215.html
Copyright © 2020-2023  润新知