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
    
  • 相关阅读:
    并行计算上机代码
    BZOJ 5170: Fable
    ANTLR4 实验总结
    ANTLR4将BF翻译成CPP
    BF语言学习
    ANTLR4将JSON翻译成XML
    ANTLR4加载csv数据
    语法分析树监听器和访问器
    数据库数据类型总结
    java介绍
  • 原文地址:https://www.cnblogs.com/charon2/p/10444215.html
Copyright © 2011-2022 走看看