0

所以我想初始化一个 Vector 类的实例,并通过该类中定义的方法返回一个元组。

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

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

    def subtract(self, a, b):
        x = a.x - b.x
        y = a.y - b.y
        return x, y # <-- This tuple


p = Point(0, -1)
i = Point(1, 1)
# Here I want to call Vector.subtract(p, i) and assign this tuple to a Vector instance

我遵循矢量教程,但它们是 C++ 的,语法与 Python 如此不同,我不知道如何做到这一点。

4

1 回答 1

3

你为什么不重写你的方法

def subtract(self, a, b):
    x = a.x - b.x
    y = a.y - b.y
    return x, y # <-- This tuple

def subtract(self, a, b):
    x = a.x - b.x
    y = a.y - b.y
    return Vector(x, y) # <-- This tuple

您声明实例方法也很奇怪substract,这样更合理:

def subtract(self, b):
    x = self.x - b.x
    y = self.y - b.y
    return Vector(x, y) # <-- This tuple

所以你可以打电话

a = Vector(1,2)
b = Vector(4,1)
c = a.substract(b)

或者至少通过删除self引用使其成为静态方法

@staticmethod
def subtract(a, b):
    x = a.x - b.x
    y = a.y - b.y
    return Vector(x, y)  # <-- result as new Vector

然后像这样使用它

c = Vector.subtract(a, b)
于 2013-10-07T07:14:21.313 回答