【问题标题】:Vector Class Adding向量类添加
【发布时间】:2017-03-14 16:26:56
【问题描述】:

我已经为 n 维向量定义了一个类:

class Vector:
    def __init__(self, v):
        if len(v)==0: self.v = (0,0)
        else: self.v = v

并且我在类中的一个函数(add)没有返回我想要的值。目前我将其定义为:

for i in range(self.dim()):
    newvector.append(self[i+1] + other[i+1])
return Vector

我也试过了:

def __add__(self, other):
    for i in range(len(self)):
        added = tuple( a + b for a, b in zip(self, other) )
    return Vector(*added)

但这会返回 Unsupported Operand Type 错误。

我希望它通过的测试是str(v1 + v2) == 'Vector: [3, 5, 7]',但它正在返回'Vector: [2, 3, 4, 1, 2, 3]'

【问题讨论】:

  • 您正在使用运算符+ 进行列表连接,而不是添加。
  • 除非您为班级定义__len____getitem__,否则您几乎肯定希望使用self.vother.v,而不是直接使用selfother

标签: python python-3.x


【解决方案1】:

你可以试试:

class Vector:
    def __init__(self, v):
        if len(v)==0: self.v = (0,0)
        else: self.v = v
    def __str__(self):
        return 'Vector '+' '.join([str(v) for v in self.v])
    def __add__(self, other):
        return Vector(list([a + b for a, b in zip(self.v, other.v)]))
v1=Vector((1,2,3))
v2=Vector((4,5,6))
str(v1+v2)

【讨论】:

    猜你喜欢
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2021-07-30
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多