web-dev-qa-db-ja.com

クラスはPython別のファイルにありますか?

Java(またはphp))と同様に、クラスをファイルに分離するために使用しています。
Pythonでも同様ですか?さらに、どのようにファイルに名前を付ける必要がありますか?
classname.pyのような小文字か、ClassName.pyのような同じですか?
このクラスからオブジェクトを作成したい場合、または同じ「プロジェクト」(netbeans)にあるオブジェクトからオブジェクトを作成しても問題ない場合、何か特別なことをする必要がありますか?

32
Asaf

Pythonでは、1つのファイルは module と呼ばれます。モジュールは、multipleクラスまたは関数で構成できます。

Python isnotan OO言語のみ、それは意味がありません。 、1つのファイルには1つのクラスのみを含める必要があります。

1つのファイル(モジュール)には、一緒に属するクラス/機能を含める必要があります。つまり、同様の機能を提供するか、相互に依存します。
もちろんこれを誇張するべきではありません。モジュールが非常に多くのクラスまたは関数で構成されている場合、可読性は本当に低下します。次に、機能を別のモジュールに再グループ化し、 packages を作成します。


命名規則については、 PEP 8 を読みたいかもしれませんが、要するに:

クラス名

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

そして

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

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

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


オブジェクトをインスタンス化するには、ファイルにクラスをインポートする必要があります。例えば

>>> from mymodule import MyClass
>>> obj = MyClass()

または

>>> import mymodule
>>> obj = mymodule.MyClass()

または

>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()

あなたは基本的な基本的なものを求めているので、 チュートリアルを読むことをお勧めします

53
Felix Kling

いいえ、1つのファイルに複数のクラス(および関数など)を定義できます。ファイルはモジュールとも呼ばれます。

モジュール/ファイルで定義されたクラス/関数を使用するには、モジュール/ファイルをimportする必要があります。

3
Chris Henry