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

本文共 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

你可能感兴趣的文章
postgresql数据库的数据导出
查看>>
Kafka: Connect
查看>>
hibernate(七) hibernate中查询方式详解
查看>>
用gulp构建你的前端项目
查看>>
cmd for 循环拷贝文件
查看>>
【转】PHP date("Y-m-d H:i:s");获取当前时间 差8小时解决办法
查看>>
System.Security.Cryptography.CryptographicException,密钥集不存在
查看>>
敏捷团队中的QA由来
查看>>
gdb调试报错:Missing separate debuginfos, use: debuginfo-install glibc-XXX
查看>>
根据百度API获得经纬度,然后根据经纬度在获得城市信息
查看>>
mariadb 10.1查看per connection内存消耗
查看>>
重装MAC系统 “安装器有效负载签名检查失败” 解决方法
查看>>
(转) Supercharging Style Transfer
查看>>
JMeter性能测试,验证请求数据的准确性(wc命令)
查看>>
Python学习札记(二十三) 函数式编程4 sorted
查看>>
跟着百度学PHP[14]-PDO-优化驱动
查看>>
mysql的.sql文件头部 /*!32312 IF NOT EXISTS*/;
查看>>
ONVIF测试方法及工具
查看>>
《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:发布具有同步能力的FeatureService服务...
查看>>
Oracle快速克隆安装
查看>>