我试图了解 Python (v2.7)导入机制的最佳实践是什么。我有一个项目,已经开始增长一点,让我们说,我的代码组织如下:
foo/
__init__.py
Foo.py
module1.py
module2.py
module3.py
包的名称是 foo
,在它下面我有模块 Foo.py
,其中包含类 Foo
的代码。因此,我使用相同的名称为包,模块和类,这可能不是很聪明的开始。
__init__.py
是空的,类 Foo
需要导入 module1, module2 and module3
,因此我的 Foo.py
文件的一部分看起来像:
# foo/Foo.py
import module1
import module2
import module3
class Foo(object):
def __init__(self):
....
....
if __name__ == '__main__':
foo_obj = Foo()
然而,我后来重新讨论了这个问题,我认为将所有导入都放在 __init__.py
文件中会更好。因此,我的 __init__.py
现在看起来像:
# foo/__init__.py
import Foo
import module1
import module2
import module3
....
....
我的 Foo.py
只需要导入 foo
:
# foo/Foo.py
import foo
虽然这看起来很方便,因为它是一行程序,但我有点担心它可能会创建循环导入。我的意思是,当脚本 Foo.py
运行时,它会导入它能导入的所有内容,然后调用 __init__.py
,再次导入 Foo.py
(对吗?).此外,对包、模块和类使用相同的名称会使事情更加混乱。
我这样做有意义吗? 还是我在自找麻烦?