【发布时间】:2015-03-02 02:09:28
【问题描述】:
在 Python 中,当您重载加法运算符时,我正在寻找处理方法的最佳方式。
在下面的示例中,我试图弄清楚我应该在 Function 类的 add 方法中添加什么。
class Function(object):
def calculate(self, x):
raise NotImplementedError()
def __add__(self, other):
res = Function()
res.calculate = lambda x: self.calculate(x) + other.calculate(x)
return res
class Square(Function):
def calculate(self, x):
return x**2
class Cube(Function):
def calculate(self, x):
return x**3
在示例中,如果我想计算 2^2 + 2^3,我会这样做
f = Square() + Cube()
print f.calculate(2)
我这样做的方法似乎并不明显,所以我猜有更好的方法。不确定它是否有帮助,但在我真正的问题中,我正在使用(统计)内核。我必须处理多种方法,而且我还需要重载乘法运算符。
【问题讨论】:
-
不是你问的,但你可能会觉得sympy很有趣
-
问这个问题已经有一段时间了,所以我想试一试。但我不明白你为什么要这样做,并且没有一个具有属性的类函数,即
code="x**2+y**2+x",你可以在你需要的坐标中eval?像这样,你实际上需要定义你能想到的每一个可能的函数,并且在这个例子中它们并没有真正代表它们的规范形式(即实际的平方函数是a*x**2+b*x+c。你能描述一下你到底想要什么吗?做什么?
标签: python operator-overloading