On Wed, 28 Jan 2009 11:06:21 -0800, Reckoner wrote: > thanks for your reply. > > For the second case where > >> class TaintThing(object): >> parent = A >> def __init__(self, obj): >> self.__dict__['_proxy'] = obj >> def __getattr__(self, attr): >> return getattr(self._proxy, attr) >> def __setattr__(self, attr, value): >> setattr(self._proxy, attr, value) >> self.parent.taint() > > you have told it that parent is 'A'. Shouldn't that be passed to it > somehow in the following: > >> # untested >> class TaintList(list): >> def append(self, obj): >> list.append(self, TaintThing(obj)) >> # similar for __setitem__, extend, insert
Sure. Just change the initialisation of TaintThing to something like this: #untested def __init__(self, obj, parent): self.__dict__['_proxy'] = obj self.parent = parent and then TaintList to something like this: def append(self, obj): list.append(self, TaintThing(obj, self)) # similar for __setitem__, extend, insert -- Steven -- http://mail.python.org/mailman/listinfo/python-list