博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day30 item系列
阅读量:6544 次
发布时间:2019-06-24

本文共 1353 字,大约阅读时间需要 4 分钟。

item 会将数据操作类似于字典的操作 具体用到的方法    __getitem__(self, item):    __setitem__(self, key, value):    __delitem__(self, key):    __delattr__(self, item): ps: 这些方法外部都是无法调用的 内部原理:
1 class Foo: 2     def __init__(self,name,age,sex):    # 初始化方法,构造方法 3         self.name = name 4         self.age = age 5         self.sex = sex 6  7     def __getitem__(self, item): 8         if hasattr(self,item): 9             return self.__dict__[item]10 11     def __setitem__(self, key, value):12         self.__dict__[key] = value13 14     def __delitem__(self, key):15         del self.__dict__[key]16 17     def __delattr__(self, item):    # 本身就已经实现了,object类原生支持,其他则需要自己实现18         del self.__dict__[item]        # 原生就是 f.的方式删除19 20 21 f = Foo("suyang",2,"SB")22 print(f["name"])23 24 f["hobby"] = "egg"25 print(f["hobby"])26 27 del f["hobby"]28 print(f.__dict__)
正常操作的表象:
1 class Foo(): 2     def __init__(self,name,age): 3         self.name = name 4         self.age = age 5  6 a = Foo("yangtuo",18)    # 本质上内部执行了 __init__ 方法 7 print(a.__dict__)        # {'name': 'yangtuo', 'age': 18} 8 a.hobby = "play"         # 本质内部执行的是 __setitem__ 9 print(a.hobby)           # 本质上是内部执行了 __getitem__10 del a.hobby              # 本质上内部执行了 __delattr__ 11 print(a.hobby)           # AttributeError: 'Foo' object has no attribute 'hobby'

 

转载于:https://www.cnblogs.com/shijieli/p/9938623.html

你可能感兴趣的文章
ARM程序规范
查看>>
深深的爱,静静的想
查看>>
LNMP环境出现502 Bad Gateway报错
查看>>
我的友情链接
查看>>
Qt下的OpenGL 编程(8)文字、FPS、动画
查看>>
关于Thread对象的suspend,resume,stop方法
查看>>
linux下IPTABLES配置详解
查看>>
Android开发入门系列
查看>>
最强最全干货分享:Android开发书籍、教程、工具等
查看>>
说清楚讲明白vxlan在openstack中的使用场景
查看>>
RHCE 学习笔记(36) - MariaDB
查看>>
文件删除封装,懒得以后再写了
查看>>
Linux 脚本之用户创建
查看>>
Mysql字段类型设计相关问题!
查看>>
Xshell 密钥登陆
查看>>
所见不为真--图片格式文件检测python
查看>>
分享几种常用的嵌入式Linux GUI及其特点—干货
查看>>
Confluence 6 "Duplicate Key" 相关问题解决
查看>>
第18章 使用MariaDB数据库管理系统
查看>>
浅谈MySQL的B树索引与索引优化
查看>>