2

为了实践,我正在尝试为二维向量构建一个类,我想覆盖乘法运算符,以便能够将向量乘以标量,也可以乘以另一个向量(点积)。这种基于单个参数的多态性通常使用 @functools.singledispatchmethod 装饰器来实现。我的问题是,从我在网上找到的内容来看,我无法将我定义为它自己体内的类型的类引用。我希望这样做是为了定义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 预计不会识别“向量”。

4

0 回答 0