[Python] Decoratori a runtime su classe
Matteo Boscolo
matteo.boscolo a boscolini.eu
Ven 20 Apr 2012 11:29:45 CEST
Grazie mille per il suggerimento,
l'oggetto poi va a finire in sqlalchemy che internamente usa pickle per
scrivere l'oggetto nel db. quindi in questo modo dovrebbe funzionare
ciao,
Matteo
Il 20/04/2012 09:54, Marco Giusti ha scritto:
> 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 a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
Maggiori informazioni sulla lista
Python