回答:
ちょうどペン先。クラスにNibという名前を付け、大文字のNを付けます。命名規則とその他のスタイルのアドバイスの詳細については、PythonスタイルガイドのPEP 8を参照してください。
Client
たとえば、というクラスがあるとしますclient
。当然のことながら、呼び出したいクラスのインスタンスを作成することがよくあります。しかし、あなたの慣習によれば、モジュール名はになるclient
ので、インスタンスには常にのような不自然な名前を付ける必要がありますclient_instance
。この問題についてどう思いますか?
Client
ことだったとすると、それはクラス名と衝突しClient
ます。3つの名前付けバリアント(client
、Client
またはCLIENT
)しかないため、インスタンス、クラス、モジュール、または定数の2つの間には常に衝突が生じます。モジュールにインスタンスまたは定数と同じ名前を付けるのはクラスよりも少ないので、他の可能性のより良い命名規則だと思います。また、通常は変数ではなくクラスと定数をインポートするため、モジュールからのインポートが読みやすくなります。
私はそれをnib.pyと呼びます。そして、私はまた、クラスをニブと名付けます。
私が取り組んでいるより大きなpythonプロジェクトでは、基本的に1つの重要なクラスを定義する多くのモジュールがあります。クラスの名前は大文字で始まります。モジュールは小文字のクラスのように命名されます。これにより、次のようなインポートが行われます。
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
これは、Javaの方法をエミュレートするようなものです。ファイルごとに1つのクラス。しかし、柔軟性が追加されたので、理にかなっていれば、常に別のクラスを1つのファイルに追加できます。
私のソリューションはpythonicの観点からあまり人気がないことを知っていますが、1つのモジュール-> 1つのクラスのJavaアプローチを使用し、モジュールをクラスとして指定します。私はpythonスタイルの背後にある理由を理解していますが、多くのクラスを含む非常に大きなファイルを持つことはあまり好きではありません。折りたたみにもかかわらず、閲覧するのは難しいと思います。
もう1つの理由はバージョン管理です。大きなファイルがあることは、コミットがそのファイルに集中する傾向があることを意味します。これにより、解決すべき競合の数が増える可能性があります。また、コミットが特定のファイルを変更する(したがって、特定のクラスが関係する)追加のログ情報を失います。代わりに、どの変更が行われたかを理解するためのコミットコメントのみを含む、モジュールファイルへの変更が表示されます。
まとめると、もしあなたがpythonの哲学を好むなら、他の投稿の提案に行ってください。代わりにjavaのような哲学を好む場合は、クラスNibを含むNib.pyを作成します。
spyder
または同様のエディタを使用して、ナビゲーションを支援するクラスの概要と、両方で同じファイルが開いている2つのペインを表示します。また、PEP8もお読みください。PythonはPythonを記述し、JavaはJavaを記述しますが、PythonはJavaを記述するためのものではありません。
ペン先は結構です。疑問がある場合は、Pythonスタイルガイドを参照してください。
PEP 8から:
パッケージとモジュールの名前モジュールは、すべて小文字の短い名前にする必要があります。読みやすさを向上させる場合は、モジュール名にアンダースコアを使用できます。Pythonパッケージも短く、すべて小文字の名前にする必要がありますが、アンダースコアの使用はお勧めしません。
モジュール名はファイル名にマッピングされ、一部のファイルシステムでは大文字と小文字が区別されず、長い名前が切り捨てられるため、モジュール名はかなり短くなるように選択することが重要です-これはUnixでは問題になりませんが、コードが古いバージョンのMacまたはWindows、またはDOSに転送された場合の問題。
CまたはC ++で記述された拡張モジュールに、より高いレベル(たとえば、よりオブジェクト指向)のインターフェースを提供するPythonモジュールが付属している場合、C / C ++モジュールの先頭にはアンダースコア(_socketなど)があります。
モジュールには、すべて小文字の短い名前を付ける必要があります。読みやすさを向上させる場合は、モジュール名にアンダースコアを使用できます。
Pythonパッケージも短く、すべて小文字の名前にする必要がありますが、アンダースコアの使用はお勧めしません。
CまたはC ++で記述された拡張モジュールに、より高いレベル(たとえば、よりオブジェクト指向)のインターフェースを提供するPythonモジュールが付属している場合、C / C ++モジュールの先頭にはアンダースコア(_socketなど)があります。
Pythonのfooモジュールは、JavaのFooクラスファイルと同等です。
または
Pythonのfoobarモジュールは、JavaのFooBarクラスファイルと同等です。