Python魔法方法入门
纸上得来终觉浅,绝知此事要躬行。

引子
Python 中所有的魔术方法均在 Python 官方文档中有相应描述,但是对于他们的描述比较混乱而且组织比较松散,我决定给 Python 中的魔术方法提供一些用平淡的语言和实例驱使的文档。
在Python语言中存在一系列特殊的方法可以增强class的效果,它们在Python界中被称为Dunder Methods ,是double under methods的缩写,即双下划线的方法。如init和str等,都是我们日常编程中常见的方法了。 当我们创建一个没有任何行为和动作的class类时,会发现其创建的实例是没有任何属性和方法让我们去操作和使用的。
class NoLenSupport: pass
>>> obj = NoLenSupport() >>> len(obj) TypeError: "object of type 'NoLenSupport' has no len()"
为了能够使用到len方法,我们只能实现其len魔术方法。之后我们在使用len方法的时候,其实就是在使用我们自己实现的len方法。
class LenSupport: def __len__(self): return 42
>>> obj = LenSupport() >>> len(obj) 42