魔术方法(magic method) 是python特殊方法的昵称,形如 __gititem__ 这样的方法成为特殊方法。

在python的风格中,通常没有 collection.len(),取而代之的是 len(collection)。关键是collection对象中实现了 __len__ 方法。

Python特殊方法分类:

跟运算符无关的特殊方法:

类别方法名
字符串/字节序列表示形式__repr____str____format____bytes__
数值转换__abs____bool____complex____int____float____hash____index__
集合模拟__len____getitem____setitem____delitem____contains__
迭代枚举__iter____reversed____next__
可调用模拟__call__
上下文管理__enter____exit__
实例创建和销毁__new____init____del__
属性管理__getattr____getattribute____setattr____delattr____dir__
属性描述符__get____set____delete__
跟类相关的服务__prepare____instancecheck____subclasscheck__

跟运算符相关的特殊方法:

类别方法名
一元运算符__neg__ -__pos__ +__abs__ abs()
比较运算符__lt__ <__le__ <=__eq__ ==__ne__ !=__gt__ >__ge__ >=
算术运算符__add__ +__sub__ -__mul__ *__truediv__ /__floordiv__ //__mod__ %__divmod__ divmod()__pow__ **__round__ round()
反向算术运算符__radd____rsub____rmul____rtruediv____rfloordiv____rmod____rdivmod____rpow__
增量赋值算术运算符__iadd____isub____imul____itruediv____ifloordiv____imod____ipow__
位运算符__invert__ ~__lshift__ <<__rshift__ >>__and__ &、`or
反向位运算符__rlshift____rrshift____rand____ror____rxor__
增量赋值位运算符__ilshift____irshift____iand____ior____ixor__