4

関数よりもクラスを使用する方が便利なのはどのような場合ですか? 知っておくべき厳格なルールや迅速なルールはありますか? 言語依存ですか?私はさまざまなタイプの json データを解析する Python 用のスクリプトを作成するつもりです。私の直感では、これを行うには関数ではなくクラスを使用する必要があります。

4

5 に答える 5

9

ルーチンで状態を保存する必要がある場合は、クラスを使用する必要があります。それ以外の場合は、関数で十分です。

于 2012-07-04T15:15:25.810 に答える
3

まず第一に、それは言語に依存しないと思います (言語でクラスと関数を定義することも許可されている場合)。

原則として、 Class はそれ自体がbehaviorをラップしていると言えます。したがって、特定のタイプのサービスを実装する必要がある場合 (つまり、さまざまな機能を使用して)、探しているのはクラスです。
さらに、クラス(より正確なオブジェクトなど)には状態があり、クラスのより多くのオカレンスをインスタンス化できます(つまり、異なる状態を持つ異なるオブジェクト)。

それほど重要なことではありませんが、クラスを掘り起こすことができます。つまり、関数の特定の動作をわずかな変更でのみ上書きできます。

于 2012-07-04T15:17:48.497 に答える
1

状態があるときのクラス- 呼び出し間で永続化する必要があるもの

その他の場合の関数

例外: クラスがいくつかの値のみを格納し、__init__ 以外にメソッドが 1 つしかない場合は、関数をより適切に使用する必要があります。

于 2012-07-04T15:14:37.357 に答える
1

自明ではないものについては、おそらくクラスを使用する必要があります。私は、すべての「フリー フローティング」関数を utils.py ファイルに制限する傾向があります。

于 2012-07-04T15:15:18.403 に答える
1

これ言語に依存します。

Java などの一部の言語では、すべてにクラスを使用する必要があります。スタンドアロン関数の概念はまったくありません。

Pythonはそうではありません。関数をスタンドアロンで定義することはまったく問題ありません (実際には推奨されています)。関連する関数をモジュールにグループ化することもできます。他の人が述べているように、Python で本当にクラスが必要になるのは、保持する必要がある状態があるときだけです。つまり、オブジェクト内にデータをカプセル化するときです。

于 2012-07-04T15:20:16.793 に答える