Hola de nuevo!
Algo que creia sencillo, se me esta complicando o yo no pillo el concepto. Con el modulo
pickle de Python se pueden guardar o serializar objetos. Ya lo probe en su dia con listas o objetos de ese tipo. La cosa es que pensaba que se podria realizar igualmente con objetos (instancias) creadas por nosotros. Y quizas se pueda, pero no doy con la tecla.
La idea es crear una clase y de ella instanciar un objeto simple. Con un estado basico. Luego lo grabamos en disco con el modulo
pickle y cuando le deseamos recuperar debe volver con ese estado.
Algo simple seria asi:
Código Python:
Ver originalclass Humano:
def __init__(self, nombre):
self.nombre = nombre
def mostrarNombre(self):
print(self.nombre)
Instanciamos:
Y yo pensaba que haciendo esto se guardaba el objeto/instancia:
Código Python:
Ver originalwith open('objeto.bin', 'wb') as fichero:
pickle.dump(persona, fichero)
Que ciertamente se guarda, aunque no se bien que. Ya que al leerlo de esta manera (seguro que incorrecta por mi parte) no me devuelve el objeto grabado en disco:
Código Python:
Ver originalwith open('objeto.bin', 'rb') as persona:
pickle.load(persona)
En todo caso me devuelve:
Código Python:
Ver original<_io.BufferedReader name='objeto.bin'>
Intuyo incrongruencias en el uso de
pickle por mi parte. Pero no se bien como recuperar el objeto con sus estados de nuevo. O como de deberia modificar el codigo para guardar y recuperar dicha instancia con sus estados que fueron grabados.
Imaginemos que modificamos el objeto:
Pues me gustaria que al hacer el load con
pickle el atributo de nombre volviera a ser 'John' que fue como se grabo a disco ¿Esto se puede hacer?
Gracias!
EDITO:
Podria ser una posible solucion asignar al metodo load de
pickle el nombre el objeto asi?
Código Python:
Ver originalwith open('objeto.bin', 'rb') as fichero:
persona = pickle.load(fichero)