Есть ли решение для строки 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 - наш класс, очевидно, неизвестен при выражении строки. Помещение класса в 'localals' не сработало для меня.
Есть ли решение для сокращения строк?