Вызовите odeint внутри класса Python - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь вызвать odeint внутри метода в классе Python:

из scipy.integrate import odeint

class Test:

@staticmethod
def mathfunc(y, t arg1, arg2):
    x , xdot = y
    #some equations
    return xdot, xddot

def numericalsim(self, y0, t):
    y = odeint(mathfunc, y0, t, args(self.param1, self.param2))
    return y

Однако,Я получаю ошибку: имя 'mathfunc' не определено.Пожалуйста, не могли бы вы помочь мне позвонить в один класс в классе.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Чтобы вызвать статическую функцию, вам нужно поместить имя класса перед методом, посмотрите на этот полный пример:

def odeint(f, n):
  return f(n)

class A:

  @staticmethod
  def mathfunc(a):
      return a+1

  def numericalsim(self, n):
      y = odeint(A.mathfunc, n)
      return y
0 голосов
/ 19 октября 2018

Можете ли вы также поделиться, как вы импортируете свои модули?и так как это статический метод, вам нужно вызывать его, используя ваш класс.вот так:

y = odeint(SomeClass.mathfunc, y0, t, args(self.param1, self.param2))

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...