特殊函数一般以__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__相关推荐

  1. python——class类和方法的用法详解

    因为一直不太清楚面向对象的类和方法的编程思想,所以特地补了一下python-class的知识,在这里记录和分享一下. 文章目录 类和方法的概念和实例 1.python类:`class` 2.类的构造方 ...

  2. Python自定义类调用方法

    自定义类调用方法:文件名字小写,类名字大写,从文件名导入类名就行,保证文件名字和要调用的文件在一个文件夹. 类保存在类文件里面,在新文件里面调用类 比如 from alien import Alien ...

  3. python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法

    常用魔法方法 含义 __new__(cls[,...]) 1.__new__在对象被实例化时调用 2.第一个参数是类本身,其他参数传入__init__中 3.__new__如果没有返回值,则不会调用_ ...

  4. python中的特殊方法 __getitem__()

    特殊方法----getitem() Python的特殊方法__getitem_() 主要作用是可以让对象实现迭代功能.我们通过一个实例来说明. 定义一个Sentence类,通过索引提取单词. impo ...

  5. python访问类的方法_python如何调用类方法

    Python类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用.类方法的隐含调用参数是类,而类实例方法的隐 含调用参数是类的实例,静态方法没有隐含调用参数. 要想调用类中的方法,首先 ...

  6. 用Python和类的方法模拟新浪微博的批量虚假粉丝

    偶尔在刷微博的时候,发现自己多了几个粉丝,满心激动,结果点开一看,都是"加我微信""同城交友"的虚假粉丝,这些粉丝是从哪里来的呢,具体要怎么实现呢,我尝试用Py ...

  7. python final 类 和 方法

    final类: 参考连接 这里 class FinalMeta(type):def __new__(mcls, name, bases, dict):for base in bases:if isin ...

  8. python 类中的 __getitem__方法

    经常会遇到python类中遇到一些特殊的方法,最常见的就是__ini__方法,想必大家都遇到过,今天来谈谈另外一种非常好用的类方法--__getitem__ 来点干货, __getitem__的作用是 ...

  9. python 魔法方法之:__getitem__ __setitem__ __delitem__

    python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len__方法去模拟 ...

最新文章

  1. Modelsim下进行功能仿真没问题,可是在ISE综合报错,如何解决?
  2. FreeSWITCH与PSTN对接
  3. undefined reference to 问题解决方法
  4. 动态添加XtraTabControl
  5. 数据挖掘中的概念描述
  6. C#通用类Helper整理
  7. 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
  8. SQL如何删除重复数据
  9. 期末总结(持续更新)
  10. pid纠偏算法C语言,基于MATLAB环境下智能PID纠偏控制算法的仿真分析.pdf
  11. GIS空间分析 缓冲区分析与叠加分析1 选址分析(市区择房)
  12. 2019年BET公司面试题目大汇总
  13. 玩凤凰沙盘的几点思考
  14. 导出为excel无法引用解决方法
  15. tile cannot extend outside image
  16. 产品品牌想正向刷屏 就需做好精致化内容
  17. MySQL 日期字符串转换
  18. oracle lms进程 内存,基于oracle 10.2.0.1 rac学习lms进程系列四
  19. 新手必学的20个人像摄影构图法
  20. 研报:HTML5或将迎来爆发期

热门文章

  1. linux的常用操作——lftp、nfs、ssh和scp
  2. Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)
  3. 计算机辅助普通话水平测试评分办法,计算机辅助普通话水平测试评分试行办法...
  4. 3种团队分组适应项目_业务团队怎样做目标管理?更能激励员工?(附实操方法)...
  5. 特征值_陶哲轩数学发现的故事 | 特征值特征向量等式
  6. C++ char数组和char*的输入
  7. C++ 字符串指针和字符串指针数组详解
  8. 使用KNN时出现非数值属性和缺失值
  9. tf.nn.embedding_lookup
  10. 自定义view实现水波纹效果