PythonRecipesに寄稿


126:コレクションのような性質を持つクラスを作る
を書きました。

  class FrozenMap(Mapping, Hashable):
      """変更不可能、辞書の様に値を取り出せて、辞書のキーに使用できる"""
      def __init__(self, adict):
          self._dict = dict(adict)
          self._tuple = tuple(adict.iteritems())
      
      def __getitem__(self, key):
          return self._dict[key]
      
      def __iter__(self):
          return iter(self._dict)
      
      def __len__(self):
          return len(self._dict)
          
      def __eq__(self, other):
          return self._tuple == other._tuple
      
      def __hash__(self):
          return hash(self._tuple)