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

最新文章

  1. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
  2. iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理
  3. 转 LoadRunner 技巧之 IP欺骗 (推荐)
  4. java7笔记
  5. [.net 面向对象编程基础] (3) 基础中的基础——数据类型
  6. DP~数塔(hrbustoj1004)
  7. java基础-基本数据类型
  8. CPU阿甘
  9. Java线程池应用
  10. 两天三场Java实习生面试总结
  11. Part 30 to 31 Talking about Interfaces in c#
  12. magent编译安装及常见错误
  13. bzoj 2302: [HAOI2011]Problem c
  14. 一例完全理解vue 2.0 的slots 和 functional render
  15. oracle初级语法
  16. Babel 6 概述
  17. Nmap参考指南(Man Page)
  18. 《C#从现象到本质》读书笔记(四)第4章C#和面向对象
  19. Visual studio 离线安装
  20. WPF用户控件库 嵌入外部(VLC)exe

热门文章

  1. element vuex 语音播报
  2. 微信小程序日常开发中常遇到的错误代码
  3. Luogu P2597 [ZJOI2012]灾难
  4. [Oracle]如何观察Table 的各种Lock 之间的冲突
  5. ARM-GPIO
  6. 批量实现多台服务器之间ssh无密码登录的相互信任关系
  7. Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明
  8. Linux下"负载均衡+高可用"集群的考虑点 以及 高可用方案说明(Keepalive/Heartbeat)
  9. Nginx入门【转】
  10. 个人博客作业_week3