5

辞書は、クラスの定義やクラスの使用よりも奨励されているように思われます。クラスで辞書を使用する必要があるのはいつですか。

たとえば、人の辞書が必要で、各人が名前やその他の属性を持っている場合、2つの簡単な方法は次のようになります。

  1. 人々の辞書を作成します。各キーは人の名前になり、値は人が持つすべての属性の辞書になります。

  2. これらの属性を含むクラスを作成し、 sのPersonディクショナリをPerson持ち、名前をキー、Personオブジェクトを値にします。

どちらのソリューションも有効で目標を達成しているように見えますが、それでもPythonの辞書が道のりのようです。実装は十分に異なるため、前後に切り替えたい場合は、クラスベースの実装から辞書ベースの実装に、またはその逆に移行するために多くの変更が発生する可能性があります。

それで、私は何をトレードオフしていますか?

4

2 に答える 2

4

辞書は、問題を解決するためのアプローチを開始したり、実験したりするのに最適な方法です。これらは、適切に設計されたクラスの代わりにはなりません。時にはそれが正しい「最終的な解決策」であり、「私はいくつかのデータを持ち歩くだけでよい」というニーズを処理するための最も効率的な方法です。辞書から始めると便利な場合があり、通常は、作業中の特定のケースに必要な追加の動作を提供するために、いくつかの関数を作成することになります。ある時点で、私は通常、辞書の代わりにクラスを使用するように切り替える方がよりきれいでクリーンになることに気付きます。これは通常、状況のニーズを満たすために必要な行動の量と複雑さによって決まります。クラスの定義と使用はPythonで非常に簡単に行えるため、「辞書と関数」から切り替えることになります。かなり早い段階でクラスに。(私が発見したことの1つは、「ソリューションをまとめてすばやくスローする」プログラムは、非常に多くの場合、独自の機能を備えていることです。大量のクラスよりも、拡張およびリファクタリングできる実際のクラスを使用する方が生産性が高くなります。辞書を(ab)使用するコード。

于 2012-09-17T23:30:48.897 に答える
2

動作をデータでカプセル化する必要がない限り、辞書を使用する必要があります。クラスは、データを格納するだけでなく、そのデータに対して実行される操作を指定するためにも使用されます。

于 2012-09-17T23:09:22.137 に答える