web-dev-qa-db-ja.com

Pythonモジュールやパッケージのクラスを整理する

1つのファイルに複数のパブリッククラスを配置する正当な理由がある場合でも、ファイルごとに1つのパブリッククラスを使用するJavaの規則が好きです。私の場合は、しかし、それらを別々のファイルに配置する場合、importステートメントに冗長な名前(または誤解を招くモジュール名)が含まれます。

import someConverter.SomeConverter

一方、someConverterはファイル(およびモジュール)名で、SomeConverterはクラス名です。これは私にはかなり優雅に見えます。すべての代替クラスを1つのファイルに入れると、より意味のあるimportステートメントになります。

import converters.SomeConverter

しかし、関連するすべてのクラスを単一のモジュールファイルに入れると、ファイルがかなり大きくなるのではないかと心配しています。 Pythonここでのベストプラクティスは何ですか?ファイルごとに1つのクラスは異常ですか?

56
deamon

その多くは個人的な好みです。 pythonモジュールを使用すると、各クラスを個別のファイルに保持し、import converters.SomeConverter(またはfrom converters import SomeConverter)を許可するオプションがあります。

ファイル構造は次のようになります。

* converters
     - __init__.py
     - baseconverter.py
     - someconverter.py
     - otherconverter.py

そして、__init__.pyファイルで:

from baseconverter import BaseConverter
from otherconverter import OtherConverter
58
Zach

Zachのソリューションは、Python 3。

その多くは個人的な好みです。 pythonモジュールを使用すると、各クラスを個別のファイルに保持し、import converters.SomeConverter(またはfrom converters import SomeConverter)を許可するオプションがあります。

ファイル構造は次のようになります。

* converters
     - __init__.py
     - baseconverter.py
     - someconverter.py
     - otherconverter.py

そして、__init__.pyファイルで:

from converters.baseconverter import BaseConverter
from converters.otherconverter import OtherConverter
41
Spundun