流畅的Python - 第1章-Python数据模型
Contents
魔术方法(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__ |