所以我想初始化一个实例ov一个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有很大不同,我不知道如何做到这一点。
答案 0 :(得分: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)