zoukankan      html  css  js  c++  java
  • __getattribute__

    getattribute

    一、getattr

    • 不存在的属性访问,触发__getattr__
    class Foo:
        def __init__(self, x):
            self.x = x
    
        def __getattr__(self, item):
            print('执行的是我')
            # return self.__dict__[item]
    
    
    f1 = Foo(10)
    
    print(f1.x)
    
    10
    
    f1.xxxxxx
    
    执行的是我
    

    二、getattribute

    查找属性无论是否存在,都会执行

    undefined

    你可真霸道呀!!!

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

    三、getattr__与__getattribute

    当__getattribute__与__getattr__同时存在,只会执行__getattrbute__,除非__getattribute__在执行过程中抛出异常AttributeError

    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    
    
    class Foo:
        def __init__(self, x):
            self.x = x
    
        def __getattr__(self, item):
            print('执行的是我')
            # return self.__dict__[item]
        def __getattribute__(self, item):
            print('不管是否存在,我都会执行')
            raise AttributeError('哈哈')
    
    
    f1 = Foo(10)
    
    f1.x
    
    不管是否存在,我都会执行
    执行的是我
    
    f1.xxxxxx
    
    不管是否存在,我都会执行
    执行的是我
    
  • 相关阅读:
    异步请求模板和数据
    关于线上js报错问题的思考
    标准web浏览器的组件
    监控图片加载的方法
    图片轮播
    jQuery的一些小技巧()
    setTimeout/setInterval伪异步
    linux/windows java jdk环境配置
    iOS pod 第三方 unrecognized selector sent to instance
    上海4
  • 原文地址:https://www.cnblogs.com/Dr-wei/p/11851095.html
Copyright © 2011-2022 走看看