Python - 应用程序的结构

时间:2010-12-11 20:45:35

标签: python import directory-structure

上午,

有一个我一直在研究的python应用程序。

目前它仅包含几个文件但随着它变得越来越大我创建了越来越多的文件和我正在做的主要python文件的顶部

import url_thread
import task_database
import xxxx
import yyyy

我将在今天添加另一个类,这是另一个重要的内容!

有没有办法将这些py文件粘贴到文件夹中,只需要导入类/ *

我应该采取更好的方式吗?

更多,pythonic?

3 个答案:

答案 0 :(得分:1)

是的,你可以做你想要的,但不建议。

您可以创建一个包含所有模块的package,然后通过导入所有内容来污染您的命名空间:

from foo import *

...或者更好的方法是创建一个结构良好的模块包,然后根据需要显式导入它们。

答案 1 :(得分:0)

您可以制作包并从该包导入:from mypackage import *

答案 2 :(得分:0)

不要听人们所说的“命名空间污染”的所有内容。如果方便(我相信它),请继续from classes import *,但请考虑在您的包中使用__all__

确切地说,以下文件夹结构可以执行此操作:

classes/
|-- class1.py
|-- class2.py
`-- __init__.py

添加文件classes/__init__.py会创建包。它看起来像这样:

from class1 import Class1
from class2 import Class2

__all__ = ["Class1", "Class2"]

请注意__all__中的类名引号。

然后,您可以在任何脚本中使用该包:

>>> from classes import *
>>> Class1
<class classes.class1.Class1 at 0xb781c68c>
>>> Class2
<class classes.class2.Class2 at 0xb781c6ec>
>>> dir()
['Class1', 'Class2', '__builtins__', '__doc__', '__name__', '__package__']

很好,也很容易。