特殊方法(魔法方法)以 __xxx__ 命名,由解释器自动调用,实现运算符重载、容器操作、迭代等行为。
对象生命周期
| 方法 | 说明 |
|---|
__new__ | 创建实例(__init__ 之前) |
__init__ | 初始化 |
__del__ | 销毁 |
__copy__ | 浅复制 |
__deepcopy__ | 深复制 |
运算符重载
算术运算
| 方法 | 运算符 |
|---|
__add__ | + |
__sub__ | - |
__mul__ | * |
__truediv__ | / |
__floordiv__ | // |
__mod__ | % |
__pow__ | ** |
反向运算
__radd__、__rsub__ 等(左操作数不支持时调用)
比较运算
| 方法 | 运算符 |
|---|
__eq__ | == |
__ne__ | != |
__lt__ | < |
__gt__ | > |
__le__ | <= |
__ge__ | >= |
赋值运算
__iadd__、__isub__ 等(+=、-=)
容器操作
| 方法 | 触发 |
|---|
__getitem__ | obj[key] |
__setitem__ | obj[key] = val |
__delitem__ | del obj[key] |
__contains__ | x in obj |
__len__ | len(obj) |
属性访问
| 方法 | 说明 |
|---|
__getattr__ | 访问不存在的属性 |
__getattribute__ | 访问任意属性 |
__setattr__ | 设置属性 |
__delattr__ | 删除属性 |
迭代
| 方法 | 说明 |
|---|
__iter__ | 返回迭代器 |
__next__ | 返回下一元素 |
__reversed__ | 反向迭代 |
字符串表示
| 方法 | 场景 |
|---|
__str__ | print()、str() |
__repr__ | repr()、交互式终端 |
__format__ | format() |
数值转换
| 方法 | 场景 |
|---|
__bool__ | bool(obj) |
__int__ | int(obj) |
__float__ | float(obj) |
上下文管理
| 方法 | 说明 |
|---|
__enter__ | 进入 with 块 |
__exit__ | 离开 with 块 |
其他
| 方法 | 说明 |
|---|
__call__ | 对象可调用 |
__hash__ | 哈希值(用于字典键) |
Comments