Quiero definir una clase que pueda poblarse leyendo de los datos serializados de otra instancia. Aquí está el código simplificado:¿Cómo inicializar una instancia usando pickle()?
class MyClass(list):
def __init__(self,**kwargs):
if kwargs.has_key('fdata'):
f = open(kwargs['fdata'],'r')
self = pickle.load(f)
print len(self) #prints 320
f.close()
...
a = MyClass(fdata='data.dat')
print len(a) #prints 0
Ésta es la salida obtengo:
320
0
El problema que tengo es que la instancia devuelta siempre está vacío, a pesar de que soy capaz de leer todos los elementos en el interior __init__()
¿Qué puede estar causando esto?
Asignar a '__dict__' para copiar el estado del objeto funciona en el caso (común) que deriva de' objeto' y no define '__slots__'. –
'self .__ dict __. Update()' podría ser una opción "más segura", pero podría quedar con cosas que se eliminaron de los datos encurtidos por una buena razón ... –