__getattr__ __delattr__ __setattr__使用

class Room:
    def __init__(self,name):
        self.name = name

    def big_room(self):
        print('bigroot')

    def __getattr__(self, item):
        print('调用一个不存的对象属性时候,执行')

    def __delattr__(self, item):
        print('删除一个属性时候,执行')

    def __setattr__(self, key, value):
        print('设置一个属性操作的时候,执行')
        self.__dict__[key] = value

R = Room('回电话')  #设置一个属性操作的时候,执行__setattr__
R.ddddddd  #调用这个对象属性不存在,就执行__getattr__ 属性,不要加括号
del R.y    #删除的时候会触发__delattr__ 不管删除的这个属性是否存在 都触发
print(R.__dict__)

猜你喜欢

转载自www.cnblogs.com/ajaxa/p/9051951.html