Python进阶-类的item属性方法

类的内置item相关方法只有在通过字典key操作才会触发
而通过点的方式来操作,则触发attr相关方法

class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __getitem__(self, item):
        print('执行getitem')
        return self.__dict__[item]

    def __setitem__(self, key, value):
        print('执行setitem')
        self.__dict__[key] = value

    def __delitem__(self, key):
        print('执行delitem')
        self.__dict__.pop(key)

f = Foo('Jerry',18)

#获取属性,通过字典key的形式,其实是操作底层__dict__[key]来获取相应的值
print(f['name'])   #执行getitem    Jerry

#设置(修改)属性,也是通过字典key的形式,其实是操作底层__dict__[key] = value 
#来设置(修改)相应的值
f['name'] = 'Meanwey'   #执行setitem
print(f.__dict__)       #{'name': 'Meanwey', 'age': 18}

#删除属性,通过字典key的形式,其实是操作底层__dict__.pop(key)来删除相应的属性和值
del f['age']            #执行delitem
print(f.__dict__)       #{'name': 'Meanwey'}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,541评论 1 32
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,264评论 0 10
  • 不停止学习 把精力都用在提升自己上 财富 眼界 都指日可期 Don't stop learning Put all...
    xiao阿娜阅读 192评论 0 0

友情链接更多精彩内容