2009-04-02 32 views
78

"nib"というクラスを定義することを目的としたモジュールがあります。 (といくつかの関連するクラスも)モジュール自体をどのように呼び出すべきですか? 「ペン先」? "nibmodule"?他に何か?Pythonのモジュール命名規則

答えて

95

ちょうどペン先。ネーミング規則やその他のスタイルに関するアドバイスについては、PythonスタイルのガイドPEP 8を参照してください。

+2

ほとんどのPythonプロジェクトはこの規則に従っていますか?私は組み込みクラスが小文字であることに気が付いています。リスト、文字列など –

+4

あなたの観察w.r.t.組み込み型は正しいです。しかし、これらは明らかに例外です。標準ライブラリ*で定義されている他のほとんどのクラスは*大文字になります。 – Stephan202

+2

これは正しいコンベンションだと思っていましたが、それには固有の問題があります。私は 'Client'というクラスを持っているとしましょう。私は' client'を呼びたいと思うことがよくあります。しかし、あなたの大会によれば、モジュール名は 'client'であるので、私はいつも' client_instance'のように私のインスタンスを不自然なものにする必要があります。この問題についてどう思いますか? – Ray

34

私はそれをnib.pyと呼びます。私はクラスNibにも名前をつけます。

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

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

Javaの方法をエミュレートするのと同じです。ファイルごとに1つのクラス。しかし、柔軟性が追加されているので、合理的であれば、別のクラスを常に1つのファイルに追加できます。

21

nibです。疑わしい場合は、Pythonスタイルガイドを参照してください。 PEP 8から

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

モジュール名がファイル名にマッピングされ、そしていくつかのファイルシステムは 大文字小文字を区別しないと長い名前を切り詰めされているので、モジュール 名前はかなり短くなるように選択することが重要である - これは、Unix上で問題になることはありません、 ですが、コードが古いMacまたは Windows版またはDOSに転送されると問題が発生する可能性があります。

CまたはC++で書かれた拡張モジュールがより高いレベルを提供する添付のPython モジュールを有する場合(例えば、複数のオブジェクト指向) インターフェイス、C/C++モジュールは、先頭にアンダースコアを有している(例えば_socket)。

+1

uhm ...これは胃の中で私を襲う。私はパッケージ/モジュールのアンダースコア接頭辞を全く違ったもの(monty pythonの参照を意図している)のために使用しています。 –

25

私のソリューションはPythonの観点からはあまり一般的ではありませんが、1つのモジュールから1つのクラスのJavaアプローチを使用することをお勧めします。 私はPythonスタイルの背後にある理由を理解していますが、たくさんのクラスを含む非常に大きなファイルを持っているのはあまり好きではありません。折りたたみながらもブラウジングは難しいです。

もう1つの理由はバージョン管理です。ファイルが大きいと、コミットがそのファイルに集中する傾向があります。これにより、より多くの競合が解決される可能性があります。コミットが特定のファイルを変更する(したがって特定のクラスを含む)追加のログ情報も失われます。代わりに、モジュールファイルの変更が表示されます。コミットコメントだけが変更の内容を理解します。

要約すると、Pythonの考え方が好きな人は、他の投稿の提案を参考にしてください。代わりにjavaのような考え方を好むなら、Nib.pyを含むクラスNibを作成してください。

+1

上記の問題は、エディタの制限やバージョン管理ツールの使用に起因するものであり、言語やプログラミングスタイルによるものではありません。ファイルごとに1つのクラスがコード構造に有害です。 'spyder'などのエディタを使用して、ナビゲーションを支援するためのクラスの概要を表示し、同じファイルを持つ2つのペインを両方で開きます。また、PEP8をお読みください。 PythonはPythonとJava for Javaを書くためのものですが、PythonはJavaを書くためのものではありません。 –

+4

@ IoannisFilippidis:モジュールのすべてのクラスを、通常管理しているコードサイズの1つのファイルに入れなければならない場合、ファイルを開くことさえできず、他の同僚との衝突が急増し、上司がそれを提案するための私の顔(比喩的には、それです)。 1つのファイル・アプローチは、PEP-8の縮尺ではありません。 –

+0

@StefanoBorini:PEP8は単一のファイルアプローチを要求しません。モジュールあたり1つのクラスと1つのコード単位(コード単位)は非常に広いスペクトルの2つの極端なものです。モジュールあたり1つのファイルで管理できないほど大きなファイルサイズが見えている場合は、パッケージをモジュールに分割する方法を改訂することを検討するべきでしょう。 –

0

FOO Pythonでモジュールは

又は

foobarにPythonでモジュールはでFooBarのクラス・ファイルに相当するであろうJavaでのFooクラス・ファイルに相当するであろうJava