我在理解如何从子模块中从父模块导入类时遇到了一点困难。我有以下目录结构:
module/
__init__.py (1)
common.py (containing testfunc and CommonClass)
submod/
__init__.py (2)
test.py (containing TestClass)
在(1)
我有:
from common import *
所以我可以直接做:
import module
module.testfunc()
在(2)
我有:
from test import TestClass
所以从内部module
我可以做到:
import submod
class_inst = submod.TestClass()
现在在TestClass
(包含在test.py
)中,我想使用 的实例CommonClass
,所以我尝试首先使用以下方法导入它:
from ..common import *
哪个工作正常,但是当我尝试创建 in 的实例CommonClass
时TestClass
:
class TestClass(object):
def __init__(self):
self.inst = CommonClass()
我得到错误:
NameError: global name 'CommonClass' is not defined
同样,如果我尝试改为from ..common import CommonClass
我得到错误:
ImportError: cannot import name CommonClass
据我所知,CommonClass
应该从内部可见test.py
,所以我不确定为什么找不到它。我有一种感觉,我对__init__.py
. 有没有人可以通过指出我犯的任何明显错误来提供帮助?