浅谈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的迭代器、生成器以及相关的itertools包
Apr 02 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
python中seaborn包常用图形使用详解
Nov 25 Python
python实现滑雪游戏
Feb 22 Python
Python使用Excel将数据写入多个sheet
May 16 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
Python 数据可视化之Matplotlib详解
Nov 02 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
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
ktv收银员岗位职责
2013/12/16 职场文书
医院节能减排方案
2014/06/13 职场文书
化工专业自荐书
2014/06/16 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
公司授权委托书范文
2014/09/21 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
时尚女魔头观后感
2015/06/04 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书