python - 可以在 sympy 中为符号添加描述吗?

标签 python sympy

我在 sympy 中寻找一种功能,可以在需要时为符号提供描述。这将类似于

>>> x = symbols('x')
>>> x.description.set('Distance (m)')
>>> t = symbols('t')
>>> t.description.set('Time (s)')
>>> x.description()
'Distance (m)'
>>> t.description()
'Time (s)'

这会很有用,因为它可以让我跟踪我的所有变量并了解我正在处理的物理量。像这样的事情在 sympy 中甚至是遥不可及的吗?

编辑

我不认为这是重复的,因为符号的 __doc__ 属性似乎是不可变的。请考虑以下事项:

>>> print(rhow.__doc__)

    Assumptions:
       commutative = True

    You can override the default assumptions in the constructor:

from sympy import symbols
A,B = symbols('A,B', commutative = False)
bool(A*B != B*A)
    True
bool(A*B*2 == 2*A*B) == True # multiplication by scalars is commutative
    True

>>> rhow.__doc__ = 'density of water'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-87-bfae705941d2> in <module>()
----> 1 rhow.__doc__ = 'density of water'

AttributeError: 'Symbol' object attribute '__doc__' is read-only

确实存在 .__doc__ 属性,但我无法根据自己的目的更改它。它是只读的。

最佳答案

您可以继承 Symbol 类并添加您自己的自定义属性,如下所示:

from sympy import Symbol, simplify

# my custom class with description attribute
class MySymbol(Symbol):
    def __new__(cls, name, description=''):
        obj = Symbol.__new__(cls, name)
        obj.description = description
        return obj

# make new objects with description
x = MySymbol('x')
x.description = 'Distance (m)'
t = MySymbol('t', 'Time (s)')
print( x.description, t.description)

# test
expr = (x*t + 2*t)/t
print (simplify(expr))

输出:

Distance (m) Time (s)
x + 2

关于python - 可以在 sympy 中为符号添加描述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021227/

相关文章:

python:元组列表中元组的链元素

python - 绘制 pandas 中随时间变化的行数

python - 寻找方程的数值解

python - SymPy:如何使用常量计算表达式?

matrix - sympy:收集矩阵系数的符号?

python - 仅比较日期时间中的时间部分 - Python

python - Django Rest框架ApiView返回可执行文件

python - 如何在 f 字符串中解释命名表达式?

python - 关于 sympy.printing.mathml 中的括号错误

sympy - 表达式中的舍入 float