2010-07-02 154 views
4

我是一位python开发人员。在java中,您可以访问同一目录中的所有类,而无需导入它们。Python项目体系结构

我想在Python中实现相同的行为。这可能吗?

我已经尝试了各种解决方案,例如通过导入所有文件,我导入到处。这很有效,但每次我想访问一个外国班时,我都必须输入myClass = rootFolder.folder2.folder3.MyClass()

你能告诉我一个如何在多个目录上的python体系结构的例子吗? 真的必须在每个文件中导入你需要的所有类吗?

想象一下,我正在编写一个web框架。该框架的用户是否必须将他们需要的所有内容导入到他们的文件中?

+0

来自python的禅宗:“显式比隐式更好” – Javier 2010-07-02 14:24:06

+1

除了Stargazer的回答,别忘了Python允许你在同一个文件中有多个不相关的类。所以你不需要像Java那样分割东西。 – 2010-07-02 14:31:09

回答

2

把一切都放到一个文件夹(不要紧的名称),并确保该文件夹中有一个名为_ _初始化_ _的.py(该文件可以是空的)文件。

然后你可以将下面的行添加到您的代码的顶部:

from myfolder import * 

这应该给您访问该文件夹中定义的所有内容,而无需每次给予的前缀。

你也可以有文件夹的多个深度是这样的:

from folder1.folder2 import * 

让我知道,如果这是你要找的人。

+0

我只是看着Django,他们在需要时导入他们需要的东西。猜猜这可能是做它的方法。 – Baversjo 2010-07-02 14:08:58

+1

-1:使用'from ... import *'是可怕的风格,要么明确指定要导入的内容,例如'从测试导入test1,test2'。或者,最好不要使用'from',并且可以选择缩短名称,如'import test.inner_test'。 – nikow 2010-07-02 14:51:09

+0

我同意这不是很好的风格,但那不是他所要求的。 – riwalk 2010-07-02 19:34:31