web-dev-qa-db-ja.com

Pythonモジュールの命名規則

「nib」というクラスを定義することを目的とするモジュールがあります。 (およびいくつかの関連クラスも)モジュール自体をどのように呼び出す必要がありますか? 「ペン先」? 「nibmodule」?他に何か?

93
Ram Rachum

ペン先だけ。クラスにNibという名前を付け、大文字のNを付けます。命名規則やその他のスタイルに関するアドバイスの詳細については、 PEP 8 、Pythonスタイルガイドを参照してください。

105
Stephan202

Nib.pyと呼びます。また、クラスにNibという名前を付けます。

私が取り組んでいるより大きなpythonプロジェクトでは、基本的に1つの重要なクラスを定義する多くのモジュールがあります。クラスの名前は大文字で始まります。モジュールは小文字のクラスのように命名されます。これにより、次のようなインポートが行われます。

from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs

これは、Javaの方法をエミュレートするのに少し似ています。ファイルごとに1つのクラス。ただし、柔軟性があれば、意味がある場合は常に単一のファイルに別のクラスを追加できます。

40
rincewind

私のソリューションはPythonの観点からはあまり人気がないことを知っていますが、クラスとして名前が付けられたモジュールで、1つのモジュール-> 1つのクラスのJavaアプローチを使用することを好みます。 pythonスタイルの背後にある理由を理解してください。しかし、私は多くのクラスを含む非常に大きなファイルを持つのはあまり好きではありません。

別の理由はバージョン管理です。大きなファイルがあるということは、コミットがそのファイルに集中する傾向があることを意味します。これにより、解決される競合の量が増える可能性があります。また、コミットが特定のファイルを変更する(したがって、特定のクラスを含む)追加のログ情報を失います。代わりに、モジュールファイルへの変更が表示され、コミットのコメントのみがどの変更が行われたかを理解します。

要約すると、python哲学を好む場合は、他の投稿の提案をご覧ください。代わりにJavaのような哲学を好む場合は、クラスNibを含むNib.pyを作成します。

27
Stefano Borini

ペン先は大丈夫です。疑問がある場合は、Pythonスタイルガイドを参照してください。

PEP 8 から:

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

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

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

21
thedz

から PEP-8:パッケージおよびモジュール名

Modulesは、すべて小文字の短い名前にする必要があります。読みやすさを改善する場合は、モジュール名にアンダースコアを使用できます。

Pythonパッケージも短い、すべて小文字の名前にする必要がありますが、アンダースコアの使用は推奨されません。

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

0
Ehsan