def _p_class(self, dict): cls = self.__class__ d = {'_p_class': cls, '__dict__': dict} add_class_properties(cls, Local, d) class metacls(type): def mro(cls): mro = type.mro(cls) mro.insert(mro.index(Persistent), Local) return tuple(mro) return metacls("Local%s" % cls.__name__, (Local, cls), d)
def _p_class(self, d): items = WorkingCopyDict(self) cls = self.__class__ d = {'_p_class': cls, '_p_items': items, '__dict__': d} # copy dictionary methods exclude = LocalDict.__dict__ for key in dict.__dict__: if key not in exclude: value = getattr(items, key, None) if isinstance(value, types.MethodType): d[key] = staticmethod(value) add_class_properties(cls, LocalDict, d) return type("Local%s" % cls.__name__, (LocalDict, cls), d)