特殊方法(魔法方法)是 Python 以 __xxx__ 格式命名的内置方法,由解释器自动调用,支持运算符重载、容器操作、迭代等功能。
核心特征
- 命名:双下划线包裹(
__init__、__add__) - 调用:由解释器自动触发,不手动调用
- 作用:让自定义类支持内置类型操作
高频方法
初始化与销毁
| 方法 | 触发场景 |
|---|
__init__ | obj = Class() |
__del__ | 对象被回收 |
运算符重载
1
2
3
4
5
6
| class Num:
def __init__(self, val): self.val = val
def __add__(self, other): return Num(self.val + other.val)
a, b = Num(1), Num(2)
c = a + b # 调用 a.__add__(b)
|
常用:__sub__、__mul__、__eq__、__lt__
容器操作
| 方法 | 触发场景 |
|---|
__len__ | len(obj) |
__getitem__ | obj[i]、obj[1:3] |
__setitem__ | obj[i] = val |
__contains__ | x in obj |
迭代
| 方法 | 说明 |
|---|
__iter__ | 返回迭代器 |
__next__ | 返回下一元素 |
字符串表示
| 方法 | 触发场景 |
|---|
__str__ | print(obj)、str(obj) |
__repr__ | 交互式终端、repr(obj) |
可调用对象
1
2
3
4
5
| class Adder:
def __call__(self, a, b): return a + b
add = Adder()
add(1, 2) # 调用 add.__call__(1, 2)
|
Comments