我想要重载一个向量的乘法运算符。同时可以计算向量向量,和向量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])
不知道还有没有什么其他的思路呢? 有从参数直接入手来实现类似重载功能的方式吗?
对于你的需求,可以通过判断 参数的类型来进行不同的处理嘛