是否有解决方案来对sympify()字符串进行自定义方法?
Sympy具有漂亮的功能sympify
。
这是官方示例。
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>
后两行不能通过sympify来简化-在字符串化时,我们的类显然是未知的。将课程放到“本地人”中对我不起作用。
是否有减少字符串的解决方案?
Function
,而不是Object
。使用哪个?答案 0 :(得分:1)
我认为它满足了您的要求... MyList1没有打印方法,但是数据在那里:
>>> list(sympify('MyList1()', locals=local_dict))
[1, 2]
答案 1 :(得分:1)
我认为这是SymPy中的错误。基本上,从字符串构造对象时,它不会调用_sympy_
。您可以通过两次调用sympify()
(如sympify(sympify('MyList1()', locals=local_dict))
)来解决此问题。在正常操作下,sympify()应该是幂等的,因此这样做没有任何危害。