1. ホーム
  2. python

[解決済み】pythonでimmutable辞書を作成する方法は?

2022-02-03 11:50:56

質問

次のことをしたい subclass dict を、サブクラスのすべてのディクショナリが不変であるように、python で作成します。

がどのようなものなのか理解できません。 __hash__ は不変性に影響を与えます。 等しい または 非同等 オブジェクトの !

では __hash__ を使用すると、不変性を実装できますか?どのように?

更新 :

目的は、APIからの共通の応答はdictとして利用可能であり、それはグローバル変数として共有されなければならないことです。だから、それは何があってもそのままである必要がある?

解決方法は?

を発見しました。 公式リファレンス : の提案は、却下された PEP に含まれています。

class imdict(dict):
    def __hash__(self):
        return id(self)

    def _immutable(self, *args, **kws):
        raise TypeError('object is immutable')

    __setitem__ = _immutable
    __delitem__ = _immutable
    clear       = _immutable
    update      = _immutable
    setdefault  = _immutable
    pop         = _immutable
    popitem     = _immutable

アトリビュート: http://www.python.org/dev/peps/pep-0351/