在Python中,超方法(也称为魔术方法或特殊方法)是指那些具有特殊名称的方法,它们以双下划线开头和结尾(例如__init__
, __str__
, __add__
等)。这些方法在特定的情况下会被Python自动调用,以实现一些内置的行为。
超方法通常会隐含地接收一些特殊的参数:
self
参数代表类的实例本身。它允许你在方法内部访问和修改实例的属性和其他方法。cls
参数代表类本身。它允许你在方法内部访问和修改类级别的属性和方法。types.MethodType
动态绑定方法时,可能会看到这两个参数。常见的超方法类型包括:
__init__
(初始化实例)、__del__
(销毁实例)。__eq__
(等于)、__lt__
(小于)。__add__
(加法)、__sub__
(减法)。__str__
(对象的字符串表示)、__repr__
(对象的官方字符串表示)。__getattr__
(访问不存在的属性)、__setattr__
(设置属性)。Vector
类,并通过重载__add__
和__mul__
方法来实现向量的加法和标量乘法。__iter__
和__next__
方法,你可以创建一个迭代器对象。__call__
方法,你可以使一个类的实例像函数一样被调用;通过定义__enter__
和__exit__
方法,你可以创建一个上下文管理器。self
参数。self
参数,并通过它来访问实例的属性。class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
if isinstance(other, Vector):
return Vector(self.x + other.x, self.y + other.y)
raise TypeError("Unsupported operand type")
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2 # 调用__add__方法
print(v3.x, v3.y) # 输出:4 6
在这个示例中,我们定义了一个Vector
类,并通过重载__add__
方法实现了向量的加法。注意,在__add__
方法中,我们接收了self
和other
两个参数,其中self
代表第一个操作数(即v1
),other
代表第二个操作数(即v2
)。
领取专属 10元无门槛券
手把手带您无忧上云