我有一个类Vec3D(参见http://pastebin.com/9Y7YbCZq)
目前,我允许Vec3D(1,0,0)+ 1.2,但我想知道如何以这样的方式重载+运算符,以便获得以下输出:
>>> 3.3 + Vec3D(1,0,0)
[4.3, 3.3 , 3.3]
Run Code Online (Sandbox Code Playgroud)
代码不是必需的,但只是提示我应该看哪个方向.一般的东西比特定的实现更有用,因为我需要为乘法,减法等实现相同的东西.
agf*_*agf 11
您正在寻找__radd__:
class MyClass(object):
def __init__(self, value):
self.value = value
def __radd__(self, other):
print other, "radd", self.value
return self.value + other
my = MyClass(1)
print 1 + my
# 1 radd 1
# 2
Run Code Online (Sandbox Code Playgroud)
如果添加左侧的对象不支持在右侧添加对象,则检查右侧的对象是否有__radd__魔术方法.
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |