zoukankan      html  css  js  c++  java
  • 类中的内置方法

    __getattr__:如果对象属性不存在会触发

    class A:
        def __init__(self,name):
            self.name = name
        def __getattr__(self, item):
            print('我被调用了')
    ret = A('wanglan')
    print(ret.name)
    ret.s  #s属性不存在
    
    结果:
    wanglan
    我被调用了
    View Code

    __delattr__:删除对象属性时会触发

    class A:
        def __init__(self,name):
            self.name = name
        def __delattr__(self, item):
            print('我被调用了')
    ret = A('wanglan')
    print(ret.name)
    del ret.name
    
    结果:
    wanglan
    我被调用了
    View Code

    __setattr__ :增加对象属性是会触发

    class A:
        def __init__(self,name):
            self.name = name
        def __setattr__(self, key, value):
            print('我被调用了')
            #self.key = value #会进入死循环
            self.__dict__[key]=value
    ret = A('wanglan')
    print(ret.__dict__)
    ret.age = 18
    print(ret.__dict__)
    
    结果:
    我被调用了
    {'name': 'wanglan'}
    我被调用了
    {'name': 'wanglan', 'age': 18}
    View Code
  • 相关阅读:
    预防新型冠状病毒科普宣传网站
    四则运算
    结对审查
    最大子段和
    单元自动测试Junit
    浅谈过去,畅想未来
    第一次的结对编程
    代码审查
    单元测试
    junit4单元测试
  • 原文地址:https://www.cnblogs.com/wanglan/p/9592878.html
Copyright © 2011-2022 走看看