Я работаю с модулем Sympy для создания класса, который можно использовать для символического вывода определенных уравнений, и я сталкиваюсь с вопросом о том, как модуль ведет себя в среде ноутбука Jupyter.Вот простой фрагмент кода, который доходит до сути проблемы:
Я импортирую sympy и определяю следующий класс в записной книжке Jupyter:
from sympy import *
class example:
def __init__(self, parameters):
self.y = simplify(0)
globals().update(dict((p, symbols(p)) for p in parameters))
def define_expression(self, expression1):
self.y = expression1
def add_expression(self, expression2):
return self.y + expression2
Если запустить это в JupyterЗаписная книжка, тогда я могу без проблем выполнить следующие операции:
temp = example(['x'])
temp.define_expression(x+1)
temp.add_expression(x**2+1)
С другой стороны, если я сохраню приведенный выше код как test_class.py и запусту следующий код в записной книжке Jupyter
import test_class as tc
temp = tc.example(['x'])
temp.define_expression('x+1')
тогда я получаю следующую ошибку:
NameError Traceback (most recent call last)
<ipython-input-9-e7d0340f038c> in <module>()
----> 1 temp.define_expression(x+1)
NameError: name 'x' is not defined
Мой вопрос сводится к следующему: Можно ли создать класс, который определяет символы Sympy, которые могут использоваться глобально в Jupyter?ноутбук?