在Python中,dunder方法(也称为”magic methods”或”特殊方法”)是用双下划线包裹的方法,例如init()、str()等。
dunder方法的主要作用有:
- 操作对象时自动调用
例如init()方法在对象初始化时调用,str()方法在打印对象时调用。
## python www.itzhimei.com 代码
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f'Person {self.name}'
p = Person('Bob')
print(p) # 自动调用__str__()
- 运算符重载
可以重载标准运算符的行为,如加法运算符通过add()方法重载。
## python www.itzhimei.com 代码
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
v1 = Vector(1, 2)
v2 = Vector(2, 3)
v3 = v1 + v2 # 触发__add__
- 制定类的行为
如iter()方法用于制定对象的迭代方式,len()方法用于确定len()运算的行为。
## python www.itzhimei.com 代码
class Fib:
def __len__(self):
return 10 # len(fib)返回10
dunder方法让我们可以自定义Python类的各种默认行为,编写灵活的类。