python中运算符的重载有什么好的方式?

我想要重载一个向量的乘法运算符。同时可以计算向量向量,和向量float
v为向量

    def __mul__(v1, v2):
        return vec3(v1.e[0]*v2.e[0],v1.e[1]*v2.e[1],v1.e[2]*v2.e[2])
    def __mul__(v, t):
        return vec3(t*v.e[0],t*v.e[1],t*v.e[2])

这样的写法,很明显有问题,请问有什么好的解决方案吗?

........................................................................................
补充
感谢陈力的回答,按照stackoverflow中的思路,代码修改成以下的样子了。

    def __mul__(v, par):
        if(isinstance(par,vec3)):
            return vec3(v.e[0] * par.e[0], v.e[1] * par.e[1], v.e[2] * par.e[2])
        else:
            return vec3(par*v.e[0],par*v.e[1],par*v.e[2])

不知道还有没有什么其他的思路呢? 有从参数直接入手来实现类似重载功能的方式吗?

阅读 2.4k
1 个回答

对于你的需求,可以通过判断 参数的类型来进行不同的处理嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题