【Python】Python Dunder方法是干什么用的?

在Python中,dunder方法(也称为”magic methods”或”特殊方法”)是用双下划线包裹的方法,例如init()、str()等。

dunder方法的主要作用有:

  1. 操作对象时自动调用
    例如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__()
  1. 运算符重载
    可以重载标准运算符的行为,如加法运算符通过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__
  1. 制定类的行为
    iter()方法用于制定对象的迭代方式,len()方法用于确定len()运算的行为。
## python www.itzhimei.com 代码
class Fib:
  def __len__(self): 
    return 10 # len(fib)返回10

dunder方法让我们可以自定义Python类的各种默认行为,编写灵活的类。