def append(self, callback): """Just like list.append, except it can also handle lists and discards None-values""" if callback is None: pass elif callable(callback): list.append(self, WeakMethod(callback)) elif isinstance(callback, list, tuple): for i in callback: self.append(i) else: assert False
def __contains__(self, elem): if isinstance(elem, WeakMethod): return list.__contains__(self, elem) else: return WeakMethod(elem) in self
def remove(self, elem): if not isinstance(elem, WeakMethod): elem = WeakMethod(elem) list.remove(self, elem)