Pythonのクラスとモジュール


19

Pythonにはre、特定のアクションセットを実行する多くのモジュール(など)があります。このモジュールの関数を呼び出して結果を取得することができ、モジュール全体としてその背後にある考えがあります(この場合、正規表現を処理します)。

クラスはほとんど同じことを行うように見えますが、モジュールよりもかなり多くのプロパティを使用するようです。

モジュールとクラスとの違いは何ですか?(私はモジュールをサブクラス化できないことを知っていますが、それはそれですか?)モジュールの代わりにクラスを使用する必要があるのはいつですか?


モジュールメソッドを呼び出すと、モジュールがクラスのインスタンスに渡されるだけであることに注意してください。たとえば、randomモジュールを参照してください。reただし、これが当てはまるかどうかは思い出せません。
jsc

1
RBT

回答:


12

Pythonモジュールは、再利用可能なコードをカプセル化するパッケージに他なりません。モジュールは、常にではありませんが、通常、その__init__.py中にファイルがあるフォルダーに存在します。モジュールには、関数だけでなくクラスも含めることができます。importキーワードを使用してモジュールをインポートします。

Pythonには、ファイルに定義を配置し、スクリプトまたはインタープリターの対話型インスタンスで使用する方法があります。このようなファイルはモジュールと呼ばれます。モジュールの定義は、他のモジュールまたはメインモジュールにインポートできます。

次のリンクでPythonモジュールの詳細をご覧ください。

https://docs.python.org/2/tutorial/modules.html(Python 2) https://docs.python.org/3/tutorial/modules.html(Python 3)

一方、クラスは、メインアプリケーションコードまたはアプリケーションによってインポートされたモジュール内で定義できます。クラスはオブジェクト指向プログラミングのコードであり、プロパティとメソッドを含めることができます。

次のリンクでPythonクラスの詳細をご覧ください。

https://docs.python.org/2/tutorial/classes.html(Python 2) https://docs.python.org/3/tutorial/classes.html(Python 3)


3
モジュールに単一のクラスがあることは悪いことではありません。クラスに関数しか含まれていなくてもかまいませんか?そのような状況では、通常、クラスを作成せずにモジュールを作成する必要があります。モジュールの代わりにクラスを使用するタイミングに関する基本的なルールはありますか?(それが私が尋ねようとしていることです...質問をより明確にするために編集すべきですか?)
プロQ

6
クラスの複数のインスタンスを作成できますが、モジュールのインスタンスは作成できません。モジュールを静的クラスまたはシングルトンと比較できます。
エネコアロンソ

1
モジュールは、常に__init__.pyファイルのあるフォルダーに存在するとは限りません。
multigoodverse

1
@ProQ Pythonのような言語では、クラスではなくモジュール内に関数を(たとえばJavaとは対照的に)持つことができるので、モジュールレベルで静的関数を保持するのが一般的に良い形式です。クラスは、独自の状態を持つインスタンスを意味します。
タークサラマ

-2

それが純粋な関数の束である場合、例えばre、私はそれらをモジュールに入れます。そのコードで保持したい状態があることがわかっているときにクラスを使用します(たとえば、一度読み取られたが、そのデータがいくつかの関数で使用されているファイル)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.