浅谈Python类的__getitem__和__setitem__特殊方法
作者:jingxian 发布时间:2022-05-05 00:21:16
标签:getitem,setitem,python
一个有点绕的例子,用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
>>>


猜你喜欢
- 我们网站的静态资源(css、js和背景图片)和web应用程序是分开部署的,几乎所有的静态资源都部署在同一个应用下。最开始的网站
- CREATE OR REPLACE PROCEDURE PROC6338196642095312503719(输入新闻主题 Varchar2
- 本文是基于Apache poi类实现的批量导入读取Excel文件,所以要先引入Apache poi的依赖<dependency>
- 快速修改MySQL某张表的表结构--摘录自《MySQL管理之道》ALTER TABLE 表名 MODIFY 列名 数据类型;这个命令可以修改
- 这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 一、Pyecharts 概述Pyechart 是一个用于生成 Echarts 图表(Echarts 是基于 Javascript 的开源可视
- 前言最近在解决一些算法优化的问题,为了实时性要求,必须精益求精的将资源利用率用到极致。同时对算法中一些处理进行多线程或者多进程处理。在对代码
- 表单验证是WEB开发中经常遇到的问题,我们以前常见的做法是:在客户端对表单域进行内容的检查,看是否是满足一定的要求或满足一定的结构,比如:是
- python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy
- 本文实例为大家分享了Python画圣诞树的具体代码,供大家参考,具体内容如下源代码from turtle import *import ra
- 本文实例为大家分享了python绘制柱形图的具体代码,供大家参考,具体内容如下#柱形图import pandasimport numpyim
- 使用 pd.Series把dataframe转成Seriests = pd.Series(df['Value'].value
- 在MySQL中,对于索引的使用并是一直都采用正确的决定。简单表的示例:CREATE TABLE `r2` (ID` int(11) DEFA
- 一、什么是shutilshutil可以简单地理解为sh + util ,shell工具的意思。shutil模块是对os模块的补充,主要针对文
- 每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。文中总结了10
- 最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmode中加载指定so文件的那种加载
- vue中异步数据获取1、获取异步数据,通过async/await限制 import { fetchList } from '
- 1. glob文件名模式匹配尽管glob API很小,但这个模块的功能却很强大。只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可
- 使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出
- 关于高性能的分布式内存对象缓存系统Memcached,我们在另一篇文章中有提到过“在windows系统下如何安装memcached的讲解”,