web-dev-qa-db-ja.com

Pythonソースコードはどのように整理すればよいですか?

私はPython(これを試してみるのは今が最高です))を始めており、いくつかのベストプラクティスを探しています。

私の最初のプロジェクトは、複数のスレッドでコマンドライン実験を実行するキューです。非常に長いmain.pyファイルを取得し始めているので、分割したいと思います。一般的に、私は探しています:どのようにpythonプログラマは複数のソースファイルを整理しますか?あなたのために働く特定の構造はありますか?

私の具体的な質問は次のとおりです。

  1. 各クラスは別々のファイルにあるべきですか?
  2. ソースコードに関連する単体テストを整理するにはどうすればよいですか?
  3. Docコメント、特にコマンドライン操作のコメントはどこに置くべきですか?
  4. 複数のディレクトリを使用する場合、それらの間にクラスをインポートするにはどうすればよいですか?

おそらく試行錯誤によってここに自分の結論のいくつかを描くことができますが、何かgoodから始めたいと思います。

92

Ericが指摘した記事 toは、大きなPythonコードベースの整理の詳細をカバーしているため、素晴らしいです。

Googleからここに来て、1つの大きなソースファイルを複数のより管理しやすいファイルに分割する方法を見つけようとしている場合、プロセスを簡単に要約します。

現在main.pyというファイルにすべてがあるとします:

  • 同じフォルダーに別のソースファイルを作成します(この例ではutils.pyを呼び出しましょう)
  • 必要なクラス、関数、ステートメントなどをmain.pyからutils.pyに移動します
  • main.pyの先頭にimport utilsの1行を追加します

概念的には、これは別のソースファイルにutilsという新しいモジュールを作成することです。その後、必要な場所にインポートできます。

27
Drew Noakes

コードとテストを整理する方法は、どのOO言語でも同じです。

私のやり方からの回答。それは正しくないかもしれないが、私のために働く

  1. 機能の分割方法に依存します。私のメインpythonアプリの場合、エントリポイントのクラスと機能の異なるビットのパッケージを持つ1つのファイルがあります
  2. EclipseにはPyDevを使用し、Javaの場合と同じように整理します。
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. どこでもDocStringを使用して、すべてを追跡します
  2. 関連する__init__.pyファイルがフォルダー内にあることを確認した後。 from module import classの単純なケース
6
AutomatedTester