dict, - , ? , .
from collections import OrderedDict
class FreezableDict(OrderedDict):
def __init__(self, *args, **kw):
super(OrderedDict, self).__init__(*args, **kw)
self._frozen = False
def __setitem__(self, key, value):
if key not in self and self._frozen:
raise TypeError("No key additions once a FreezableDict is frozen!")
return super(OrderedDict, self).__setitem__(key, value)
def freeze(self):
self._frozen = True
d = FreezableDict((("A", 1), ("B", 2)))
print d["A"]
d["C"] = "New Value"
d.freeze()
d["C"] = "Replacement"
print d["C"]
d["D"] = "This raises a TypeError exception"
, , , , OrderedDict - , . , .