【发布时间】:2016-06-15 14:19:33
【问题描述】:
我想创建一个未评估的函数,除非我通过evalf() 明确要求它。我试过这个(按照http://docs.sympy.org/latest/modules/functions/index.html中的例子)
In [1]: import sympy as sy
In [2]: class f(sy.Function):
...: def _eval_evalf(self,prec):
...: print "evalf"
...: return sy.S(1)
...:
In [3]: f(1)
Out[3]: f(1)
In [4]: f(1)+1
Out[4]: evalf
1 + f(1)
可以看出,该函数远离 [3] 中的 _eval_evalf(),但它通过了 [4] 中的 _eval_evalf(),这超出了我最初定义符号函数的目的。我也试过添加这个
@classmethod
def _should_evalf(cls, arg):
return -1
但这并没有解决问题。
有没有一种简单的方法(我对类不是很熟悉)来防止函数 f 通过_eval_evalf()?
【问题讨论】: