gpt4 book ai didi

python - 您可以在类和类的实例上调用方法吗?

转载 作者:行者123 更新时间:2023-11-28 17:33:27 26 4
gpt4 key购买 nike

我正在尝试制作一个 Vector 类,它采用三个参数 (x,y,z) 来制作矢量对象

u=Vector(3,-6,2) #Creates a vector you with components <3,-6,2>

你可以用向量做的一件事是添加它们。我正在寻找一种方法来做这样的事情:

u=Vector(3,-6,2)
v=Vector(4,5,-1)
c=Vector.add(u,v) #returns a third vector, the sum of u and v (c = <7,-1,1>)
u.add(v) #modifies u to be the sum of u and v (u = <7,-1,1>)

最佳答案

不能用相同的名称定义类和实例方法。

但是,不是创建实例方法.add() , 我会覆盖 __add__通过 + 添加两个实例时调用的魔法函数符号。当 Python 尝试计算 x + y 时,它会尝试调用 x.__add__(y) :

class Vector(object):
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

def __repr__(self):
return '<Vector: {}, {}, {}>'.format(self.x, self.y, self.z)

def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y, self.z + other.z)

@classmethod
def add(cls, v1, v2):
return cls(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z)

--

>>> u = Vector(1, 2, 3)
>>> v = Vector(4, 5, 6)
>>> c = u + v
>>> print c
<Vector: 5, 7, 9>

>>> c = Vector.add(u, v)
>>> print c
<Vector: 5, 7, 9>

关于python - 您可以在类和类的实例上调用方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com