浅谈Python类的__getitem__和__setitem__特殊方法


Posted in Python onDecember 25, 2016

一个有点绕的例子,用PyScripter调试器步进跟踪可以看清楚对 象结构的具体细节。

对原作改变了一下,在未定义子对象属性时__getitem__中使用现成的__setitem__来定义。

## encoding:utf-8
"""
这个类继承了object, object是Python的最小单元,可以在Python的">>>"控制台用dir(objct)或者dir (__builtins__.object)命令查看它的属性,可以看到__setattr__, __new__...他们是python中任何对象都会具有的属性,你也可以dir(1)和dir(int)看看,可看到更多内容,在这里,1作为一个实例化的int对象出现。而这些__xxx__属性有什么用呢?在接下来的代码中,我们可以了解__getitem__和__setitem__有什么用 (这两个属性在dict对象中非常重要)
"""

class WPUnit(object):
  def __init__(self):
    self._res={}

def __setitem__(self,key,val):
  self._res[key]=val

def __getitem__(self,key):
  if self._res.has_key(key):
    return self._res[key]
  else:
    r=WPUnit()
    self.__setitem__(key,r)
    return r

a=WPUnit()
a['a']['b']['c']['d']['e']['f']['g']=5
print a['a']['b']['c']['d']['e']['f']['g']
>>> class testsetandget: 
  kk = {}; 
  def __getitem__(self, key): 
    return self.kk[key]; 
  def __setitem__(self, key, value): 
    self.kk[key] = value; 
     
>>> a = testsetandget() 
>>> a['first'] = 1 
>>> a['first'] 
1 
>>> a.__setitem__('second', 2) 
>>> a.__getitem__('second') 
2 
>>> a['second'] 
2 
>>>

以上就是小编为大家带来的浅谈Python类的__getitem__和__setitem__特殊方法全部内容了,希望大家多多支持三水点靠木~

Python 相关文章推荐
python通过openpyxl生成Excel文件的方法
May 12 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
python turtle库画一个方格和圆实例
Jun 27 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 #Python
详解python进行mp3格式判断
Dec 23 #Python
详解python发送各类邮件的主要方法
Dec 22 #Python
详解python 发送邮件实例代码
Dec 22 #Python
使用Python3 编写简单信用卡管理程序
Dec 21 #Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 #Python
详解python中的json的基本使用方法
Dec 21 #Python
You might like
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
如何实现JS函数的重载
2006/09/22 Javascript
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
python中int与str互转方法
2018/07/02 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Django中的用户身份验证示例详解
2019/08/07 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
Python气泡提示与标签的实现
2020/04/01 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
自荐信结尾
2013/10/27 职场文书
电大自我鉴定
2013/10/27 职场文书
体育学院毕业生自荐信
2013/11/03 职场文书
工程业务员岗位职责
2013/12/31 职场文书
公司离职证明范本
2014/01/13 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
初中学生操行评语
2014/12/26 职场文书
学习计划是什么
2019/04/30 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
OpenCV-Python实现轮廓拟合
2021/06/08 Python