У меня есть питон скрипт, который вызывает NeoprobeApp.py
подобающее функцию в Parameter.py
Parameter.py
приводятся нижеPython загрузка класс из другого файла
from scipy import optimize
import numpy as np
class Parameter:
def __init__(self, value):
self.value = value
def set(self, value):
self.value = value
def __call__(self):
return self.value
def fit(function, parameters, y, x = None):
def f(params):
i = 0
for p in parameters:
p.set(params[i])
i += 1
return y - function(x)
if x is None: x = arange(y.shape[0])
p = [param() for param in parameters]
optimize.leastsq(f, p)
Я импортировать пригодную функцию успешно from Parameter import fit
. Однако, когда я пытаюсь инициализировать мои параметры
# Define initial parameters of Gaussian fit
mu = Parameter(0)
sigma = Parameter(20)
height = Parameter(1)
#define Gaussian fit function
def f(angles): return height() * exp(-((angles-mu())/sigma())**2)
fit(f, [mu, sigma, height], n_col_cnts)
Я получаю сообщение об ошибке
Traceback (most recent call last):
File "NeoprobeApp.py", line 228, in OnPlot
mu = Parameter(0)
NameError: global name 'Parameter' is not defined
Что я делаю неправильно?
я не уверен, почему этот вопрос заслуживает вниз голосование – moadeep
Downvoted, потому что это материал начального уровня, который обрабатывается в каждом учебнике python, который посвящен оператору 'import'. Ошибка также должна быть очень понятной - ваш скрипт не знает ничего с именем «Параметр». Любая хорошая IDE (например, vim + pyflakes) уведомила бы вас об этой ошибке _before_ запуска кода. Кроме того, вы, похоже, понимаете, что вам нужно импортировать функцию 'fit', почему вы считаете, что класс' Parameter' является особым и его не нужно импортировать? – l4mpi