python3面对像进阶——__setitem__,__getitem,__delitem__
发布时间:2020-12-17 16:58:56 所属栏目:Python 来源:网络整理
导读:功能是什么? __setitem__,__getitem,__delitem__和__setattr__,__delattr__,__getattr__功能很像,唯一区别是: ????__setitem__,__delitem__????只支持字典格式,????如obj['age'] = 18 ????__setattr__,__getattr__???? ?只能被实例“.”调用,如obj.age=1
功能是什么? __setitem__,__getitem,__delitem__和__setattr__,__delattr__,__getattr__功能很像,唯一区别是: ????__setitem__,__delitem__????只支持字典格式,????如obj['age'] = 18 ????__setattr__,__getattr__???? ?只能被实例“.”调用,如obj.age=18 代码示例: class?Foo: ????def?__init__(self,?name): ????????self.name?=?name ????def?__getitem__(self,?item): ????????print(self.__dict__[item]) ????def?__setitem__(self,?key,?value): ????????self.__dict__[key]?=?value ????def?__delitem__(self,?key): ????????print('del?obj[key]时,我执行') ????????self.__dict__.pop(key) ????def?__delattr__(self,?item): ????????print('del?obj.key时,我执行') ????????self.__dict__.pop(item) f1?=?Foo('luffy') f1['age']?=?18 f1['age1']?=?19 print(f1.__dict__)??#?{'age1':?19,?'name':?'luffy',?'age':?18} del?f1.age1?????????#?删除age:18 del?f1['age']???????#?删除age:19? f1['name']?=?'alex' print(f1.__dict__)??#?{'name':?'alex'} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |