1 class Job: 2 def __init__(self, name): 3 self.name = name 4 5 def __getattr__(self, item): # 当调用的属性不存在的时候,就会触发此方法 6 print('没有此属性') 7 8 def __delattr__(self, item): # 当删除属性时,会触发此方法 9 print('删除方法__delattr__') 10 11 def __setattr__(self, key, value): # 只要有属性创建的时候就会触发此函数 12 print('__setattr__执行') 13 # self.key = value # 出现递归 14 self.__dict__[key] = value 15 16 17 j1 = Job('小白') 18 print(j1.__dict__) 19 print(j1.name) 20 print(j1.sd) 21 j1.z = 2 22 print(j1.__dict__) 23 print(j1.name) 24 输出: 25 __setattr__执行 26 {'name': '小白'} 27 小白 28 没有此属性 29 None 30 __setattr__执行 31 {'name': '小白', 'z': 2} 32 小白
1 class Job: 2 def __init__(self, name): 3 self.name = name 4 5 def __getattr__(self, item): # 当调用的属性不存在的时候,就会触发此方法 6 print('没有此属性') 7 8 def __delattr__(self, item): # 当删除属性时,会触发此方法 9 print('删除方法__delattr__') 10 self.__dict__.pop(item) 11 12 def __setattr__(self, key, value): # 只要有属性创建的时候就会触发此函数 13 print('__setattr__执行') 14 # self.key = value # 出现递归 15 self.__dict__[key] = value 16 17 18 j1 = Job('小白') 19 del j1.name 20 print(j1.__dict__) 21 print(j1.__dict__) 22 print(j1.name) 23 print(j1.sd) 24 j1.z = 2 25 print(j1.__dict__) 26 print(j1.name) 27 输出: 28 __setattr__执行 29 删除方法__delattr__ 30 {} 31 {} 32 没有此属性 33 None 34 没有此属性 35 None 36 __setattr__执行 37 {'z': 2} 38 没有此属性 39 None