gpt4 book ai didi

python - 向 sympy 符号变量添加一个新字段

转载 作者:太空狗 更新时间:2023-10-30 02:57:05 25 4
gpt4 key购买 nike

我有一个 SymPy 符号变量:

from sympy import symbols 
x=symbols('x')

如何向符号变量 x 添加新字段?

x.New_Field=Arbitrary_Value

最佳答案

不能动态地将属性添加到Symbol

这很可能是个坏主意,因为 SymPy 假定它可以替换比较相等的表达式。因此,如果您创建了两个符号并将一个属性动态存储在一个符号中(假设这是可能的)

a1 = Symbol('a') 
a2 = Symbol('a')
a1.something = 0

然后 SymPy 会随意交换 a1a2,因为它们比较相等(a1 == a2 ),这肯定会产生意想不到的后果。

如果你看一下 source code ,你可以看到 Symbol 出于性能原因在其类中定义了 __slots__,这有效地告诉解释器“这些都是此类中的实例属性”。这就是为什么您不能向Symbol 动态添加属性。

一个可能的替代方法是创建一个 Symbol 的子类,将您想要的属性存储在它的 args 中,这样它们就会被考虑到您的子类对象的相等性比较中.


有关我在此处稍微解释的主题的扩展讨论,请参阅 Google 线程:How to equip a Symbol with an additional attribute?

关于python - 向 sympy 符号变量添加一个新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38449055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com