浅谈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中文乱码的解决方法
Nov 04 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python格式化输出%s和%d
May 07 Python
Python并行分布式框架Celery详解
Oct 15 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 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
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
PHP培训要多少钱
2017/06/06 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
java中两个byte数组实现合并的示例
2018/05/09 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
python绘制雪景图
2019/12/16 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
小班重阳节活动方案
2014/02/08 职场文书
跑操口号
2014/06/12 职场文书
教师暑期培训感言
2014/08/15 职场文书
高一军训的心得体会
2014/09/01 职场文书
作风建设年度心得体会
2014/10/29 职场文书
婚礼答谢词范文
2015/09/29 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
DIY胆机必读:各国电子管评价
2022/04/06 无线电