我想重写SymPy对象的__str__
属性;但是,我发现了令人困惑的行为。我从这首诗开始:
from sympy.core.numbers import One
from sympy import Basic
class MyOne(One):
def __str__(self):
return "This isn't one"
__repr__ = __str__
class MyBasic(Basic):
def __str__(self):
return "This isn't basic"
__repr__ = __str__
我的环境是ipython qtconsole
与
import sympy
sympy.init_session()
我发现不一致的行为:
In[]: MyOne()
Out[]: 1
In[]: MyBasic()
Out[] Thisisn'tbasic
这两个结果似乎都是迟发的。第一个结果-1-出人意料。我希望这不是音调,就像我的__str__
函数一样。str
和repr
的结果与预期一致。发生什么事?display
实际上做什么?你知道吗
init_session
(以及init_printing
)启用SymPy LaTeX打印机。如果要定义要打印的LaTeX字符串,则需要重写_latex(self, printer)
方法(请参见http://docs.sympy.org/latest/modules/printing.html)。你知道吗您看到您的行为的原因是
One
定义了一个乳胶打印机,所以它的子类使用它。Basic
没有,因此返回到__str__
方法。你知道吗相关问题 更多 >
编程相关推荐