3

私のコードでは、上記の 2 つのオプションのどちらでも同じように機能しますが、両方のアプローチの長所と短所を知りたいと思っています。

4

2 に答える 2

6

関数が完全にステートレスである場合、関数を含むモジュールは問題なく機能し、より単純になります。

一方、関連する状態がある場合は、通常、その状態をクラスにカプセル化し、メンバー関数を介して機能を提供することをお勧めします。

于 2013-01-22T19:12:05.843 に答える
1

まず第一に、Python のすべてのものはオブジェクトなので、クラスで関数を使用しても、その逆でもパフォーマンスの点で大きな違いはありません。

あなたが初心者の場合は、より簡単で簡単な関数付きのモジュールを使用することをお勧めします。

この手法の欠点は、同じモジュールに多くの関数が含まれている可能性があることです。これにより、どのモジュールでどの関数が機能しているかを追跡して覚えておくことが精神的に難しくなります。

カプセル化 (データ/属性 + メソッド/ロジック) の力を提供するクラスの使用に慣れていて、論理的に関連するすべてのものを 1 つのコンテナー (クラス) に入れる場合は、ここから始めることができます。

メタクラス、記述子、およびすべての Python 特殊関数を追加することで、クラスがコード内で対話する方法をカスタマイズできます。これらは、クラスの各部分のデフォルトの動作をオーバーライドできます。

クラスを使用すると、現実世界の問題をより論理的に表現するのに役立ちます。たとえば、マシン クラスがあり、そのすべてのプロパティ/仕様をデータ/属性で記述し、それがどのように動作し、入力を受け取り、メソッドで出力を生成するかを定義できます。 . また、新しいプロトコルまたは標準を作成するときにも同じことが発生する可能性があります。そのコンポーネント/入力/出力/動作を、これらのそれぞれを論理エンティティ/コンテナーで記述できるクラスで表す方が簡単です。

また、クラスはチーム作業に適しています。すべてを自分で作成するわけではありません。プロジェクトの青写真が必要であり、この青写真は小さなブロック、入力、および出力に変換する必要があります。クラスは、この状況で使用するのに最適です。

于 2013-01-22T19:44:08.833 に答える