On Thu, Apr 19, 2012 at 04:47:49PM +0200, Matteo Boscolo wrote: > Ciao a tutti > devo trasformare gli attributi della mia classe da > > class myClass(object): > def __init__(self): > self.pippo=10 > > a > > class myClass(object): > def __init__(self): > self._pippo=10 > > tutto cio per evitare dei problemi di ricorsione con il modulo pickle > adesso uso questa tecnica:
Non mi sembra che pickle abbia tanti problemi con la ricorsione se non che "...highly recursive data structure may exceed the maximum recursion depth...". Se il problema è solo per serializzare gli oggetti perché non usare un approccio differente? Invece di modificare del codice già esistente deleghi ad altri l'ingrato compito. Solo un esempio su come risulterebbe il tuo codice: class myClass(object): def __init__(self): self.pippo=10 import zope.interface from zope.interface.adapter import AdapterRegistry class ISerializable(zope.interface.Interface): def getObject(): """Return the original object""" class SerializerMyClass: zope.interface.implements(ISerializable) def __init__(self, original): self._pippo = original.pippo def getObject(self): obj = myClass() obj.pippo = 10 registry = AdapterRegistry() registry.register([declarations.implementedBy(myClass)], ISerializable, '', SerializerMyClass) ### import pickle s = pickle.dumps(ISerializable(myobj)) myobj = pickle.loads(s).getObject() _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python