Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
latex打印继承ipython中的Symphy类时行为不一致_Python_Ipython_Sympy - Fatal编程技术网

latex打印继承ipython中的Symphy类时行为不一致

latex打印继承ipython中的Symphy类时行为不一致,python,ipython,sympy,Python,Ipython,Sympy,我想覆盖SymPy对象的\uuuu str\uuuu属性;然而,我发现令人困惑的行为。我从这个MWE开始: 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

我想覆盖SymPy对象的
\uuuu str\uuuu
属性;然而,我发现令人困惑的行为。我从这个MWE开始:

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
with

import sympy
sympy.init_session()
我发现不一致的行为:

In[]: MyOne()
Out[]: 1 
In[]: MyBasic()
Out[] Thisisn'tbasic
这两个结果似乎都是迟来的。第一个结果——1——出乎意料。我希望这不是我的音调,就像我的
\uu str\uu
函数一样。
str
repr
的结果与预期一致。发生什么事?
显示
的实际功能是什么?

初始化会话
(以及
初始化打印
)启用SymPy LaTeX打印机。如果要定义要打印的latex字符串,需要重写
\u latex(self,printer)
方法(请参阅)


看到您的行为的原因是
One
定义了一个LaTeX打印机,所以它的子类使用它
Basic
没有,因此它返回到
\uuuuu\uuuu
方法

谢谢,所以你链接到的文档有点误导人,因为在这个例子中,他们确实覆盖了使用custromstrprenter的uu str uu方法,然后是Basic。u str uu=lambda self:customstrprenter(),你能解释为什么sympy使用新的打印属性吗?为什么不仅仅是普通的
\uuuu str\uuuu
?SymPy有许多不同的打印机。此外,打印机方法传入打印机以打印子对象。这使您可以使用自定义打印机子类自定义打印。有关更多信息,请参阅我链接到的文档页面。