有一個我一直在努力的python應用程序。
目前,它consits只是一對夫婦的文件,但它變得更大,我創造越來越多的文件,我的主要的Python文件的頂部,我做
import url_thread
import task_database
import xxxx
import yyyy
,我將要加入另一類今天是另一種進口!
有沒有辦法將這些文件PY粘成一個文件夾,只是不導入類/ *
有沒有更好的辦法,我應該這樣做呢?
更多pythonic?
有一個我一直在努力的python應用程序。
目前,它consits只是一對夫婦的文件,但它變得更大,我創造越來越多的文件,我的主要的Python文件的頂部,我做
import url_thread
import task_database
import xxxx
import yyyy
,我將要加入另一類今天是另一種進口!
有沒有辦法將這些文件PY粘成一個文件夾,只是不導入類/ *
有沒有更好的辦法,我應該這樣做呢?
更多pythonic?
您可以打包並從該包中導入:from mypackage import *
。
注意:這將加載'__init__'並從那裏導入。另外,請注意'import *'有很多缺陷,因此在大多數情況下被認爲是有害的(http://docs.python.org/howto/doanddont.html#from-module-import)。 – delnan 2010-12-11 20:56:14
是的,你可以做你在問什麼,但不建議。
您可以創建一個package包含所有的模塊,然後只導入一切污染您的命名空間:
from foo import *
...或者更好的辦法是創建模塊的一個很好的結構化的包,然後明確根據需要導入它們。
不要聽人們對「命名空間污染」所說的所有內容。繼續做from classes import *
,如果方便的話(我相信是這樣),但考慮在你的包中使用__all__
。
確切的說,下面的文件夾結構將做到這一點:
classes/
|-- class1.py
|-- class2.py
`-- __init__.py
添加文件classes/__init__.py
創建軟件包。它看起來像這樣:
請注意周圍的類名引號中__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__']
尼斯和容易。
你知道你可以在一行上進行多次導入嗎?即'import url_thread,task_database,xxxx,yyyy'但是總的來說,看看下面人們在說什麼關於打包和導入整齊。除非真的有必要,否則應避免使用'from ... import *'。 – 2010-12-11 21:18:19
另外,每個模塊可以有多個類!以防萬一你不知道。 – Thomas 2010-12-11 22:48:07