【发布时间】:2021-11-25 16:28:22
【问题描述】:
目标是显示 sympy 的对象(它们都继承自 Printable 类)不是在 sstr() 中,而是在默认情况下在 latex() 中
例子:
from sympy import symbols, sqrt
x, y = symbols('x y')
print(f'its {sqrt(x)} and {sqrt(y)}')
#output:
'its \\sqrt(x) and \\sqrt(y)'
如果我更改 sympy 的源代码编辑 Printable Class'__str__ 方法,这将有效。
有什么方法可以让导入的 sympy 的类继承自我的类,而不是源类而不编辑实际源?
我试过这个:
from sympy.core._print_helpers import Printable
class PrintableWrapper(Printable):
def __str__(self):
from sympy.printing.latex import latex
return latex(self, mode='plain')
__repr__ = __str__
Printable = PrintableWrapper
from sympy import Symbol, sqrt
Printable = PrintableWrapper
A = Symbol("A")
print(f'{sqrt(A)}')
#output:
'sqrt(A)'
但是如你所见,它不起作用
我问的原因是因为我使用 Ipython 的 display(Math(f'...')) 函数来显示东西,我必须像这样将任何单个 sympy 对象包装到 latex() 中:
display(Math(f'its {latex(sqrt(x))} and {latex(sqrt(y))}''))
欢迎任何使f'its {sqrt(x)} and {sqrt(y)}' 工作的解决方案
【问题讨论】: