web-dev-qa-db-ja.com

python(convention?)のクラスの命名とファイルの命名の関連付け

python(および他のいくつかの言語)では、クラスの名前は大文字でなければならない最初の文字を除いて小さな文字で書く必要があることを学びました。例:

class FooBar:
    ...

クラスは、クラスと同じ名前のファイルに入れる必要があります。この例では、ファイルfoobar.py。クラスfooをどこかにインポートしたい場合、これを行う必要があります。

from foobar import FooBar

この慣例は私を少し混乱させます。私の直感では、ファイル名がクラスを示す場合は、FooBar.py。これはファイル名ではきれいに見えません。おそらく誰かが私に標準的な慣習これが何なのか教えてもらえますか?

私の質問を理解できるようにしたいと思います。 :-)

52
Aufwind

提示したのは標準的な規則です。

パッケージ名とモジュール名

モジュールには、すべて小文字の短い名前を付ける必要があります。読みやすくするために、モジュール名にアンダースコアを使用できます。 Pythonパッケージには、すべて小文字の短い名前を付ける必要がありますが、アンダースコアの使用は推奨されません。

モジュール名はファイル名にマッピングされ、一部のファイルシステムでは大文字と小文字が区別されず、長い名前が切り捨てられるため、モジュール名をかなり短くすることが重要です。これはUnixでは問題になりませんが、コードが古いMacまたはWindowsバージョン、またはDOSに転送されるときの問題。

CまたはC++で記述された拡張モジュールに、より高いレベル(オブジェクト指向など)のインターフェイスを提供するPythonモジュールが付属している場合、C/C++モジュールにはアンダースコア(_socket)。

クラス名

ほとんど例外なく、クラス名はCapWords規則を使用します。内部で使用するクラスには、先頭にアンダースコアが追加されます。

Pythonスタイルガイド


例参照.

from configparser import ConfigParser

(ちなみに、これはPython 2.xでConfigParserでしたが、3.xでは小文字に変更されました)。

52
Katriel

PEP 8のコメント:

モジュールには、すべて小文字の短い名前を付ける必要があります。読みやすくするために、モジュール名にアンダースコアを使用できます。 Pythonパッケージには、すべて小文字の短い名前を付ける必要がありますが、アンダースコアの使用は推奨されません。

また、ファイルごとにクラスを1つだけ持つ必要はありません。むしろ、同じファイルに関連するクラスを一緒に含める必要があります。 (もちろん、場合によっては、ファイルに1つのクラスがありますが、常にそうとは限りません)

11
Winston Ewert