加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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'}


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读