在ipython中继承sympy类时的不一致行为

2024-04-26 17:50:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想重写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__函数一样。strrepr的结果与预期一致。发生什么事?display实际上做什么?你知道吗


Tags: fromimportselfreturnbasicdefthisone
1条回答
网友
1楼 · 发布于 2024-04-26 17:50:38

init_session(以及init_printing)启用SymPy LaTeX打印机。如果要定义要打印的LaTeX字符串,则需要重写_latex(self, printer)方法(请参见http://docs.sympy.org/latest/modules/printing.html)。你知道吗

您看到您的行为的原因是One定义了一个乳胶打印机,所以它的子类使用它。Basic没有,因此返回到__str__方法。你知道吗

相关问题 更多 >