在实践中,我试图为2d向量构建一个类,我想重写乘法运算符,以便能够将一个向量与标量相乘,也可以与另一个向量(点积)相乘。 这种基于单参数的多态性通常是通过@functools.singledispatchmethod decorator实现的。我的问题是,从我在网上发现的情况来看,我无法引用我定义为自身主体中的类型的类。我希望这样做是为了定义mul函数的变体,并将其注册为接收类型“vector”,这正是我在本正文中定义的类型。。有没有一种优雅的方法可以做到这一点
class vector:
def __init__(self,x,y):
self.x = x
self.y = y
@functools.singledispatchmethod
def __mul__(self, x):
pass
@__mul__.register(int)
def mul_by_scalar(self, s):
return vector(self.x * s, self.y * s)
@__mul__.register(vector)
def mul_by_vec(self, v):
return self.x*v.x + self.y*v.y
当我运行它时,Python预期不会识别“vector”
目前没有回答
相关问题 更多 >
编程相关推荐