Python Sympy:使用sympify将自定义函数缩减为字符串?
是否有包括自定义方法的sympify()字符串的解决方案? Sympy具有美丽的功能Python Sympy:使用sympify将自定义函数缩减为字符串?,python,sympy,Python,Sympy,是否有包括自定义方法的sympify()字符串的解决方案? Sympy具有美丽的功能sympify 它可以将字符串缩减为sympy函数和缩减所有表达式。很好 它允许添加“可合并”的函数作为类 这是官方的例子 from sympy import Matrix, sympify class MyList1(object): def __iter__(self): yield 1 yield 2 return def __getit
sympify
- 它可以将字符串缩减为sympy函数和缩减所有表达式。很好李>
- 它允许添加“可合并”的函数作为类李>
from sympy import Matrix, sympify
class MyList1(object):
def __iter__(self):
yield 1
yield 2
return
def __getitem__(self, i): return list(self)[i]
def _sympy_(self): return Matrix(self)
local_dict= {"MyList1": MyList1}
print(sympify(MyList1())) # Matrix([[1], [2]])
print(sympify('MyList1()')) # MyList1()
print(sympify('MyList1()', locals=local_dict)) # <__main__.MyList1 object at 0x0000000006D0AA20>
从sympy导入矩阵,sympify
类MyList1(对象):
定义(自我):
收益率1
收益率2
返回
定义(self,i):返回列表(self)[i]
定义(自我):返回矩阵(自我)
local_dict={“MyList1”:MyList1}
打印(sympify(MyList1())#矩阵([1],[2]]))
打印(sympify('MyList1()')#MyList1()
打印(sympify('MyList1()',locals=local_dict))#
最后两行不能通过sympify来减少-我们的类在对字符串进行sympify时显然是未知的。把课堂变成“本地人”对我来说不起作用
是否有减少字符串的解决方案
- 不适合我
- 没有解决
- 另外:在中,类类型是id
,而不是Function
。用哪一个Object
>>> list(sympify('MyList1()', locals=local_dict))
[1, 2]
我认为这是症状的一种错误。基本上,当它从字符串构造对象时,它不会调用
\u sympy
。您可以通过两次调用sympify()
来解决这个问题,比如sympify(sympify('MyList1()',locals=local_dict))
。在正常操作下,sympify()应该是幂等的,所以这样做没有害处 我打开了这个。