2010-12-11 13 views
2

朝、Python - アプリケーションの構造

私は作業しているPythonアプリケーションを手に入れました。

現在のところ、それはファイルだけのカップルのconsitsそれが大きくなって、私はより多くのファイルを作成していますし、私のメインのpythonファイルの先頭には、私が

import url_thread 
import task_database 
import xxxx 
import yyyy 

をやっていると私は追加するつもりです別のクラスは今日別の輸入です!

フォルダにこれらのPYファイルを固執する方法はありますし、ちょうど/ *

は、私がこれを行うべきであるより良い方法は、インポートクラスありますか?

その他、pythonic?

+0

ある行でいくつかのインポートを行うことができますか? 'import url_thread、task_database、xxxx、yyyy'ですが、一般的に、パッケージの作成や細かいインポートについて、人々が以下で何を言っているのかを参照してください。本当に必要でない限り、 'from ... import *'の使用は避けてください。 –

+0

また、モジュールごとに複数のクラスを持つこともできます。あなたが気づいていない場合に備えて。 – Thomas

答えて

0

パッケージを作成して、そのパッケージからインポートすることができます:。

+2

注:これは '__init__'を読み込んでそこからインポートします。また、 'import *'には[ほとんどの落とし穴があり、したがってほとんどの場合、有害とみなされます](http://docs.python.org/howto/doanddont.html#from-module-import)があることに注意してください。 – delnan

1

はい、あなたはあなたが尋ねていることをすることができますが、アドバイスされていません。

すべてのあなたのモジュールを含むpackageを作成してからちょうどすべてをインポートすることで、あなたの名前空間を汚染することができます

from foo import * 

...または明示的にモジュールのうまく構造化パッケージを作成してすることですより良い方法必要に応じてインポートしてください。

0

「名前空間の汚染」について人々が言うことをすべて聞かないでください。あなたにとって便利な場合は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__'] 

ニースと簡単:

次に、あなたが持っているものは何でもスクリプトでパッケージを使用することができます。

関連する問題