我有一个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)我怎么才能同时做到这两点呢?
发布于 2010-06-24 08:44:16
检查v是否为Vector2D,如果不是,则将其传递给float()并适当地进行乘法。
发布于 2010-06-24 08:52:33
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发布于 2010-06-24 08:53:52
我对Python不是很在行,但我很确定你只需要写一个函数,然后检查第二个参数的类型。
顺便问一下,为什么只将向量的分量相乘就可以将其相乘呢?这似乎是完全无用的。
https://stackoverflow.com/questions/3106534
复制相似问题