我有一个python类
class Vector2D(object):
def __init__(self, x, y):
self.x = float(x)
self.y = float(y)
def mag(self):
return sqrt(self.x**2 + self.y**2)
...
我希望能够像vector1 * vector2
一样将向量相乘,所以我添加了
def __mul__(self, v):
return Vector2D(self.x * v.x, self.y * v.y)
但我也想使用new_vector = some_vector * 2
并返回一个新的向量
def __mul__(self, factor):
return Vector2D(self.x * factor, self.y * factor)
我该怎么做?
答案 0 :(得分:2)
检查v
是否为Vector2D
,如果没有将其传递给float()
并正确相乘。
答案 1 :(得分:1)
Python中没有函数重载,你必须手动完成。
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __mul__(self, k):
if type(k) == float or type(k) == int:
return Vector(self.x * k, self.y * k)
if type(k) == Vector:
return Vector(self.x * k.x, self.y * k.y)
raise "What the hell!?"
def __str__(self):
return "<%f, %f>" % (self.x, self.y)
print Vector(1, 2) * Vector(3, 4)
print Vector(1, 2) * 5
答案 2 :(得分:0)
我对Python并不陌生,但我很确定你只需编写一个函数并检查第二个参数的类型。
顺便说一句,为什么你只是乘以它们的组件来乘以向量?这似乎完全没用。
答案 3 :(得分:0)
请考虑您可能希望将numpy用于此类数据。