Python从另一个文件加载类

moa*_*eep 0 python

我有一个NeoprobeApp.py调用拟合函数的python脚本Parameter.py Parameter.py如下所示

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)
Run Code Online (Sandbox Code Playgroud)

我成功导入了fit函数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)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

Traceback (most recent call last):
  File "NeoprobeApp.py", line 228, in OnPlot
    mu = Parameter(0)
NameError: global name 'Parameter' is not defined
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

slo*_*oth 7

您只需导入该fit函数,但不导入Parameter该类.

使用

from Parameter import fit, Parameter
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

from Parameter import fit
Run Code Online (Sandbox Code Playgroud)