2010-07-02 242 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