1. ホーム
  2. python

[解決済み] クラスと辞書のどちらを使うべきですか?

2022-08-23 20:53:02

質問

以下のような、フィールドのみでメソッドを持たないクラスがあります。

class Request(object):

    def __init__(self, environ):
        self.environ = environ
        self.request_method = environ.get('REQUEST_METHOD', None)
        self.url_scheme = environ.get('wsgi.url_scheme', None)
        self.request_uri = wsgiref.util.request_uri(environ)
        self.path = environ.get('PATH_INFO', None)
        # ...

これは簡単にdictに変換することができます。このクラスは将来の追加に対してより柔軟で、高速な __slots__ . では、代わりにdictを使うメリットはあるのでしょうか?dict はクラスよりも速いのでしょうか?そして、スロットを持つクラスよりも速いでしょうか?

どのように解決するのですか?

なぜこれを辞書にするのですか?どんな利点があるのでしょうか?後でコードを追加したい場合はどうなりますか? どこで __init__ のコードはどこに行くのでしょうか?

クラスは、関連するデータ(と通常はコード)を束ねるためのものです。

辞書はキーと値の関係を保存するためのもので、通常、キーはすべて同じ型であり、すべての値もまた1つの型である。キー/属性の名前が前もってすべてわかっていない場合、データを束ねるのに便利なこともありますが、多くの場合、これは設計に何か問題があることを示すサインです。

これはクラスにしておきましょう。