A.T.Hofkamp a écrit : > Hello all, > > This morning I tried to create my own read-only dictionary, and failed > miserably. > I don't understand why, can somebody enlighten me? > (snip)
> So if copying all methods of a native dictionary is not enough, what should I > do to make my class work as a dictionary WITHOUT deriving from dict (which > will > obviously work). > Sorry, I missed this last requirement. BTW, why don't you want to subclass dict ? Anyway, something like the following should do the trick (NB : Q&D, needs at least some testing): class ReadOnlyDict(object): def __init__(self, *args, **kw): self._dict = dict(*args, **kw) def __getattr__(self, name): if name in ('__setitem__', 'setdefault'): raise AttributeError("%s is read-only" % \ self.__class__.__name__) return getattr(self._dict, name) for name in dir(dict): if name.startswith('__') \ and name not in ('__new__', '__init__', '__setitem__', '__class__', '__dict__'): exec("%s = dict.%s" % (name, name)) -- http://mail.python.org/mailman/listinfo/python-list