elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 05:15  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [python] Objetos que se guardan y cargan solos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [python] Objetos que se guardan y cargan solos  (Leído 884 veces)
lnvisible


Desconectado Desconectado

Mensajes: 456



Ver Perfil
[python] Objetos que se guardan y cargan solos
« en: 6 Diciembre 2010, 23:37 »

Hola, estoy aprendiendo python y quiero hacer que un objeto se guarde y cargue solo, y sus subclases también. Tengo esto:

Código
from pickle import load, dump
 
class Auto:
 
 def __init__(self):
   try:
     self.load()
   except:
     self.counter = 0
 
 def load(self):
   with open(self.__class__.__name__, 'rb') as f:
     self = load(f)
 
 def dump(self):
   with open(self.__class__.__name__, 'wb') as f:
     dump(self, f)
 
class Test(Auto):
 def increment(self):
   self.counter += 1
   print(self.counter)
   self.dump()
 
if __name__ == "__main__":
 t = Test()
 t.increment()

¿Hay algo mal?

GRacias!!


En línea

ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: [python] Objetos que se guardan y cargan solos
« Respuesta #1 en: 7 Diciembre 2010, 02:44 »

¿A que te refieres con que se guarde y cargue solo?. ¿A que cuando prendes la pc ejecute eso?

PD: el comando "r", sirve para leer archivos ya existentes quizá es eso.En todo caso poner el "w" antes que la r para que cree el archivo.


En línea
lnvisible


Desconectado Desconectado

Mensajes: 456



Ver Perfil
Re: [python] Objetos que se guardan y cargan solos
« Respuesta #2 en: 7 Diciembre 2010, 07:07 »

No, lo que quiero es que el objeto se almacene a si mismo (y no a otro) en un fichero, y que cuando vuelva a crear un objeto de esa clase no haga uno nuevo sino que lo cargue del fichero.

No puedo usar r como dices porque crearía el fichero vacío y daría un error, porque necesito que tenga un contador con un numero, ese numero se tiene que ir incrementando cada vez que se llame al script.
En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [python] Objetos que se guardan y cargan solos
« Respuesta #3 en: 7 Diciembre 2010, 12:27 »

Buenas.

Lo que ocurre es que en realidad self no significa nada para Python, self se utiliza por convención, por lo cual, cuando tu haces esto ...
Código
self = load(f)

... lo único que estas haciendo es modificar el valor de la variable, si pones un string, entonces será un string, pero eso no significa que el objeto ha cambiado porque de por si no es un puntero a memoria.
Lo que debes de hacer es modificar los atributos del objeto actual, con los atributos del objeto cargado :P
Código
from pickle import load, dump
 
class Auto:
 def __init__(self):
   try:
     self.load()
   except:
     self.counter = 0
 
 def load(self):
   with open(self.__class__.__name__, 'rb') as f:
     self.__dict__ = load(f).__dict__
 
 def dump(self):
   with open(self.__class__.__name__, 'wb') as f:
     dump(self, f)
 
class Test(Auto):
 def increment(self):
   self.counter += 1
   print(self.counter)
   self.dump()
 
if __name__ == "__main__":
 t = Test()
 t.increment()

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

lnvisible


Desconectado Desconectado

Mensajes: 456



Ver Perfil
Re: [python] Objetos que se guardan y cargan solos
« Respuesta #4 en: 8 Diciembre 2010, 06:26 »

GRacias!! Estaba probando con getattr y setattr pero me daba un error de weakref o algo parecido : \

He hecho otras cosillas, al final me ha quedado esto :)

Código
#!/usr/bin/env python3
from pickle import load, dump
from os.path import exists
 
class Auto:
 def __init__(self):
   if (exists(self.__class__.__name__)):
     self.load()
   else:
     self.start()
     self.dump()
 
 def start(self):
   pass
 
 def load(self):
   with open(self.__class__.__name__, 'rb') as f:
     self.__dict__ = load(f).__dict__
 
 def dump(self):
   with open(self.__class__.__name__, 'wb') as f:
     dump(self, f)
 
 def __enter__(self):
   if (exists(self.__class__.__name__)):
     self.load()
   return self
 
 def __exit__(self, extype, exvalue, traceback):
   if (None == extype == exvalue == traceback):
     self.dump()
   else:
     print('oh oh...')
 
 
class Test(Auto):
 def start(self):
   self.counter = 0
 
 def increment(self):
   self.counter += 1
   print(self.counter)
 
 
if __name__ == "__main__":
 with Test() as t:
   t.increment()

Lo que pasa es que quiero que la clase general tenga todo lo posible, para hacer comodamente las hijas ;) que ahora son persistentes :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMAS Q SE DESCARGAN SOLOS
Windows
Kadra 4 585 Último mensaje 2 Septiembre 2005, 17:32
por _k4r10iZ_
Archivos/Carpetas se borran solos
Seguridad
JuszR 3 1,782 Último mensaje 28 Abril 2006, 02:47
por JuszR
los iconos del escritorio se descolocan solos.
Windows
kino32al 7 2,516 Último mensaje 25 Enero 2009, 20:04
por kino32al
Virus que se descargan solos?
Seguridad
BlackSr 9 1,149 Último mensaje 12 Abril 2009, 16:33
por BlackSr
Problema declarando objetos dentro de objetos, ligados entre sí
Programación C/C++
jscupc 9 1,979 Último mensaje 22 Marzo 2010, 02:20
por Littlehorse
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines