Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Drakaris en 6 Marzo 2022, 01:09 am



Título: ¿Como mantener el valor de una variable estatica de una clase, cuya clase es ejecutada en distintos archivos? | Python3
Publicado por: Drakaris en 6 Marzo 2022, 01:09 am
Buenos dias. ¿Se puede conseguir que los datos de una variable estatica definida en una clase sea permanente, ejecutando la misma clase en diferentes archivos? Explico lo que quisiera hacer...

listClients
Código
  1. class ListClients:
  2.    clients = {}
  3.    @staticmethod
  4.    def add(key,value):
  5.        ListClients.clients[f"{key}"]=value
  6.  
  7.    @staticmethod
  8.    def get(key):
  9.        print(ListClients.clients[key])
  10.  
  11.    @staticmethod
  12.    def delete(key):
  13.        del ListClients.clients[key]
  14.  

main.py
Código
  1. from listClients import ListClients
  2. print("==================main================")
  3. ListClients.add("key",{"HOLA":"adios"})
  4. ListClients.add("key2",{"HOLA2":"adios2"})
  5. print(ListClients.clients)
  6.  

main2.py
Código
  1. from listClients import ListClients
  2. print("==================main2================")
  3. ListClients.add("key3",{"HOLA3":"adios"})
  4. print(ListClients.clients)
  5.  

El archivo listClients se encarga de almacenar clientes
El main.py crea dos objetos. La variable clientes contiene los dos objetos, gracias a que en la clase tiene una variable estatica que hace la persistencia de los datos en la misma instancia.
Código:
==================main================
{'key': {'HOLA': 'adios'}, 'key2': {'HOLA2': 'adios2'}}
Pero si ejecuto el main2.py....
Código:
==================main2================
{'key3': {'HOLA3': 'adios'}}
Como se ve, las keys creadas en el main.py no se mantienen. Esto es porque en el main2.py hago un
Código
  1. from listClients import ListClients
Haciendo que se cree otra instancia de la clase, cuya instancia no tiene los objetos creados por el archivo main.py

Mi pregunta es, si se puede hacer que al ejecutar el main2.py y se añade el "key3" cuando hago un print de clients salg así
Código:
{'key': {'HOLA': 'adios'}, 'key2': {'HOLA2': 'adios2'},'key3': {'HOLA3': 'adios'}}

Se que la solucion es un JSON, pero no lo quiero almacenar en un JSON pues los datos que voy a almacenar son objectos Sockets (SSLSockets) y estos no se pueden serializar para añadir a un archivo JSON.

Se puede hacer lo que quiero de alguna manera?? Gracias.