魔方方法之:__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__中对相应的键和值进行拦截,写入自己的操作了

浙公网安备 33010602011771号