加载具有依赖类的模块

时间:2017-07-17 15:53:12

标签: python class import module

我是Python的新手,如果我在编写这个问题时没有使用正确的白话,我会道歉。我在Windows机器上使用Python 3.6.1。我提供了一个我正在解决的问题的实例。

假设我编写了一个保存在Demo_func.py文件中的模块。它包含以下功能:

def chebyshev_nodes(degree, domain):
    return Chebyshev.basis(degree,domain).roots()

然后我运行以下脚本:

from numpy.polynomial.chebyshev import Chebyshev
from Demo_func import chebyshev_nodes

chebyshev_nodes(5, [1,5])

它产生了这个错误:

  

NameError:名称'Chebyshev'未定义

如果我在我的脚本中编写函数chebyshev_nodes,如下所示,那么它的工作正常。

from numpy.polynomial.chebyshev import Chebyshev
def chebyshev_nodes(degree, domain):
    return Chebyshev.basis(degree,domain).roots()

chebyshev_nodes(5, [1,5])

我的理解是,进口切比雪夫是全球性的。但不知何故,这确实在我的模块Demo_func中运行。如何编写依赖Chebyshev类的模块?

1 个答案:

答案 0 :(得分:-1)

正如user2357112在上面的评论中指出的那样,该模块是全局初始化的,但名称不是。解决方案涉及在Demo_func.py文件中的函数中加载Chebyshez类。

def chebyshev_nodes(degree, domain):
    from numpy.polynomial.chebyshev import Chebyshev
    return Chebyshev.basis(degree,domain).roots()