魔方方法之:__setattr__和__getattr__
魔方方法:__setattr__和__getattr__
作用:能够采用点的方式来进行取值和赋值
如mydic..name进行取值,mydic.name='aaa'进行赋值
举例:字典
字典的取值方法:mydic['name'] 赋值方法:mydic['name'] = 'aaa'
class Mydic(dict): # 自己定义一个字典类,继承python内置的字典类 pass mydic = Mydic(name='aaa',age='12') # 实例化一个字典 # 正常的字典取值语法:mydic['name'] 赋值方法:mydic['name']='bbb' print(mydic['name']) #>> aaa
用mydic.name的方法来赋值:__setattr__(),加点即触发该方法
用mydic.name的方法来取值:__getattr__(),加点即触发该方法
class Mydic(dict): # 自己定义一个字典类,继承python内置的字典类 def __setattr__(self, key, value): print('对象加点赋值时,触发__setattr__方法') self[key] = value def __getattr__(self, item): print('在对象加点取值时,触发__getattr__方法') return self[item] mydic = Mydic(name='aaa',age='12') # 实例化一个字典 mydic.name = 'bbb' print(mydic) #>>{'name': 'bbb', 'age': '12'} 证明加点赋值成功 print(mydic.age) #>>12 证明加点取值成功
上述运行结果:
作用:我们可以在__setattr__和__getattr__中对相应的键和值进行拦截,写入自己的操作了