[Python-Dev] Add a frozendict builtin type

Serhiy Storchaka storchaka at gmail.com
Thu Mar 1 08:43:13 CET 2012


01.03.12 01:52, Victor Stinner написав(ла):
> Problem: if you implement a frozendict type inheriting from dict in
> Python, it is still possible to call dict methods (e.g.
> dict.__setitem__()). To fix this issue, pysandbox removes all dict
> methods modifying the dict: __setitem__, __delitem__, pop, etc. This
> is a problem because untrusted code cannot use these methods on valid
> dict created in the sandbox.

You can redefine dict.__setitem__.

   oldsetitem = dict.__setitem__
   def newsetitem(self, value):
       # check if self is not frozendict
       ...
       oldsetitem(self, value)
       ....
   dict.__setitem__ = newsetitem



More information about the Python-Dev mailing list