我有一个问题,但我不知道如何解释它,所以让我在这里放一些代码:
class 2DVector:
def __init__(self, x, y):
self.x = x
self.y = y
def multiply(self, scalar):
self.x *= scalar
self.y *= scalar
是否可以做这样的事情
vector1 = 2DVector(1, 1).multiply(3)
# x == 3, y == 3
还是我总是必须这样做
vector2 = 2DVector(1, 1)
# x == 1, y == 1
vector2.multiply(3)
# x == 3, y == 3
请您参考如下方法:
在 multiply 方法的末尾添加 return self 允许您使用第一个选项:
class TwoDVector:
def __init__(self, x, y):
self.x = x
self.y = y
def multiply(self, scalar):
self.x *= scalar
self.y *= scalar
return self
if __name__ == '__main__':
vector = TwoDVector(2, 3).multiply(2)
# vector.x == 4, vector.y == 6
