python get_len_Python类,特殊方法, __getitem__,__len__, __delitem__
特殊函数一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__、 __setitem__(subscriptable所需method), __delitem__(del obj[key]所需method), __len__(len(…)所需method)等;
以下以什么都不做的Something类,结合lambda表达式,来说明这些特殊函数;
>>> class Something:
... pass
...
>>> s = Something()
>>>s['key1']
Traceback (most recent call last):
File "", line 1, in
TypeError: 'Something' object is not subscriptable
与subscriptable相关的函数是 __getitem__、 __setitem__,顾名思义,两者分别用于获取和设置相应的key的值;
Something.__getitem__ = lambda self, key: key
__getitem__简单的返回key;
>>> s['key1']
'key1'
>>> s[1]
1
>>> s[(1,2,3)]
(1, 2, 3)
注意:不可变类,都可以作为key;
>>> s[1] = 2
Traceback (most recent call last):
File "", line 1, in
TypeError: 'Something' object does not support item assignment
增加__setitem__方法,简单的打印key-value对;
>>> Something.__setitem__ = lambda self, key, value: print(repr(key) + ":" + repr(value))
>>> s[1] = 33
1:33
>>> s[(1,2,3)] = "333"
(1, 2, 3):'333'
>>> del s[1]
Traceback (most recent call last):
File "", line 1, in
AttributeError: __delitem__
增加__delitem__方法,简单打印
>>> Something.__delitem__ = lambda self, key : print(repr(key) + " is deleted")
>>> del s[23]
23 is deleted
>>> len(s)
Traceback (most recent call last):
File "", line 1, in
TypeError: object of type 'Something' has no len()
增加__len__方法,简单返回1
>>> Something.__len__ = lambda self : 1
>>> len(s)
1
python get_len_Python类,特殊方法, __getitem__,__len__, __delitem__相关推荐
- python——class类和方法的用法详解
因为一直不太清楚面向对象的类和方法的编程思想,所以特地补了一下python-class的知识,在这里记录和分享一下. 文章目录 类和方法的概念和实例 1.python类:`class` 2.类的构造方 ...
- Python自定义类调用方法
自定义类调用方法:文件名字小写,类名字大写,从文件名导入类名就行,保证文件名字和要调用的文件在一个文件夹. 类保存在类文件里面,在新文件里面调用类 比如 from alien import Alien ...
- python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法
常用魔法方法 含义 __new__(cls[,...]) 1.__new__在对象被实例化时调用 2.第一个参数是类本身,其他参数传入__init__中 3.__new__如果没有返回值,则不会调用_ ...
- python中的特殊方法 __getitem__()
特殊方法----getitem() Python的特殊方法__getitem_() 主要作用是可以让对象实现迭代功能.我们通过一个实例来说明. 定义一个Sentence类,通过索引提取单词. impo ...
- python访问类的方法_python如何调用类方法
Python类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用.类方法的隐含调用参数是类,而类实例方法的隐 含调用参数是类的实例,静态方法没有隐含调用参数. 要想调用类中的方法,首先 ...
- 用Python和类的方法模拟新浪微博的批量虚假粉丝
偶尔在刷微博的时候,发现自己多了几个粉丝,满心激动,结果点开一看,都是"加我微信""同城交友"的虚假粉丝,这些粉丝是从哪里来的呢,具体要怎么实现呢,我尝试用Py ...
- python final 类 和 方法
final类: 参考连接 这里 class FinalMeta(type):def __new__(mcls, name, bases, dict):for base in bases:if isin ...
- python 类中的 __getitem__方法
经常会遇到python类中遇到一些特殊的方法,最常见的就是__ini__方法,想必大家都遇到过,今天来谈谈另外一种非常好用的类方法--__getitem__ 来点干货, __getitem__的作用是 ...
- python 魔法方法之:__getitem__ __setitem__ __delitem__
python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len__方法去模拟 ...
最新文章
- Modelsim下进行功能仿真没问题,可是在ISE综合报错,如何解决?
- FreeSWITCH与PSTN对接
- undefined reference to 问题解决方法
- 动态添加XtraTabControl
- 数据挖掘中的概念描述
- C#通用类Helper整理
- 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
- SQL如何删除重复数据
- 期末总结(持续更新)
- pid纠偏算法C语言,基于MATLAB环境下智能PID纠偏控制算法的仿真分析.pdf
- GIS空间分析 缓冲区分析与叠加分析1 选址分析(市区择房)
- 2019年BET公司面试题目大汇总
- 玩凤凰沙盘的几点思考
- 导出为excel无法引用解决方法
- tile cannot extend outside image
- 产品品牌想正向刷屏 就需做好精致化内容
- MySQL 日期字符串转换
- oracle lms进程 内存,基于oracle 10.2.0.1 rac学习lms进程系列四
- 新手必学的20个人像摄影构图法
- 研报:HTML5或将迎来爆发期
热门文章
- linux的常用操作——lftp、nfs、ssh和scp
- Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)
- 计算机辅助普通话水平测试评分办法,计算机辅助普通话水平测试评分试行办法...
- 3种团队分组适应项目_业务团队怎样做目标管理?更能激励员工?(附实操方法)...
- 特征值_陶哲轩数学发现的故事 | 特征值特征向量等式
- C++ char数组和char*的输入
- C++ 字符串指针和字符串指针数组详解
- 使用KNN时出现非数值属性和缺失值
- tf.nn.embedding_lookup
- 自定义view实现水波纹效果