如何对两个类实例求和和相乘

帕西奥普

正如我在主题中所说,我需要创建可以与其他类相加并相乘的类。下面是预期的结果和代码行为。

v1 = Vector([1, 2, 1, 5]) - class 1 called Vector
v2 = Vector([2, 3, 1, 4]) - class 2 called Vector

# [1+2, 2+3, 1+1, 5+4] - expected sums
v3 = v1 + v2
v3.get_vals()
[3, 5, 2, 9] - expected result

# 1*2 + 2*3 + 1*1 + 5*4 - multiplication
v1 * v2
29
巴雷尔

您可以定义__add__,__mul__和其他 dunder 方法。

例如:

class Vector:
    def __init__(self, arr):
        self.arr = list(arr)
    
    def __add__(self, other):
        return Vector(a + b for a, b in zip(self.arr, other.arr))
    
    def __mul__(self, other):
        return sum(a * b for a, b in zip(self.arr, other.arr))
    
    def get_vals(self):
        return self.arr

v1 = Vector([1, 2, 1, 5])
v2 = Vector([2, 3, 1, 4])

v3 = v1 + v2
assert [3, 5, 2, 9] == v3.get_vals()

assert v1 * v2 == 29

我确实建议为此使用诸如numpy之类的软件包,而不是重新发明轮子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章