浅谈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计算对角线有理函数插值的方法
May 07 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
python3实现多线程聊天室
Dec 12 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
python3.x实现base64加密和解密
Mar 28 Python
pandas DataFrame索引行列的实现
Jun 04 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
python实现XML解析的方法解析
Nov 16 Python
python实现简单的学生管理系统
Feb 22 Python
4种非常实用的python内置数据结构
Apr 28 Python
pytorch 如何使用amp进行混合精度训练
May 24 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实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
html5与css3小应用
2013/04/03 HTML / CSS
大学生自我评价怎样写好
2013/10/23 职场文书
通信工程毕业生自荐信
2013/11/01 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
求职自荐信怎么写
2014/03/06 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
《金子》教学反思
2014/04/13 职场文书
医院信息公开实施方案
2014/05/09 职场文书
红白喜事主持词
2015/07/06 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL