自定义Py模块:内部模块导入

时间:2017-12-22 15:57:40

标签: python python-import python-module circular-reference

我正在创建一个自定义Python模块,我希望类似于numpy,其中大多数功能都可以通过调用np.function()或者你有什么来访问。但是,在创建我的子模块和__init__.py文件时,我认为我遇到了循环导入引用。这是我正在尝试做的事情以及我所看到的错误,任何帮助我按照我设想的方式工作的提示都非常感激:

让我们调用模块“foobar”并说我在路径上有一个名为“foobar”的文件夹,在这个文件夹中有三个py文件:“__ init__.py”,“foo.py”和“bar.py”

子模块1的一个例子,“foo.py”:

import bar
class Foo():
    def __init__(self):
        pass
    def runfunc(self):
        bar.func()

子模块2的一个例子,“bar.py”:

import foo
def func():
    f=foo.F()

__init __。py:

的一个例子
import numpy
from foo import *
from bar import *

__all__ = ['foo', 'bar']

所以我认为是我的问题是,当导入foo时,它会导入bar,导入foo,这会创建一个循环(在我看来)。我也很困惑__init__.py的使用,如果,当它被调用并导入其他模块时,他们在执行时无法看到对方(即我需要将条形图导入foo,即使__init__.py这样做)。

当我从尝试导入整个模块的脚本运行某些东西时,我在bar.py中遇到错误“ImportError:无法导入名称foo”。我实际上也在同一模块的其他地方有这个问题,我有一个基类“Base”的文件和扩展类“Extended”,其中base.py需要导入extended.py,所以它可以产生扩展类的实例和extended.py需要导入base.py,以便它可以继承该类。

提前感谢您的帮助!

0 个答案:

没有答案