un método sofisticado para compartir datos en python

Una forma más sofisticada de compartir datos entre módulos sería a través de instancias de clase o patrones de diseño Singleton.

  1. Clases e instancias:

Si los datos que desea compartir están relacionados, puede incluirlos en una clase. Las clases son una forma de agrupar datos y funcionalidad.

Aquí hay un ejemplo simple:

# file: shared_data.py

class SharedData:
    def __init__(self):
        self.data = None

Luego en otro módulo:

# file: module1.py

from shared_data import SharedData

# create an instance of SharedData
shared_data_instance = SharedData()
shared_data_instance.data = "Hello, World!"

Y en un tercer módulo:

# file: module2.py

from shared_data import SharedData

# create another instance of SharedData
shared_data_instance = SharedData()
print(shared_data_instance.data)  # This will print: None

Esto no funcionará como se esperaba, porque cada vez que crea una nueva instancia de SharedData, tiene su propio dataatributo.

  1. Patrón único:

El patrón singleton es un patrón de diseño que restringe la instanciación de una clase a una sola instancia. Esto es útil cuando se necesita exactamente un objeto para coordinar acciones en todo el sistema. Aquí hay un ejemplo básico de una clase singleton:

# file: singleton.py

class Singleton:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls._instance

Ahora, cuando instancias la Singletonclase varias veces, siempre obtienes la misma instancia:

# file: module1.py

from singleton import Singleton

singleton_instance = Singleton()
singleton_instance.data = "Hello, World!"

Y en un tercer módulo:

# file: module2.py

from singleton import Singleton

singleton_instance = Singleton()
print(singleton_instance.data)  # This will print: "Hello, World!"

Esto funciona como se esperaba, porque la Singletonclase siempre devuelve la misma instancia.

Sin embargo, tenga en cuenta que las variables globales y los singletons generalmente se consideran un mal diseño porque hacen que su programa sea más difícil de entender y pueden generar errores sutiles. Por lo general, es mejor pasar datos explícitamente a las funciones y métodos que los necesitan, aunque podría requerir más tipeo.

Supongo que te gusta

Origin blog.csdn.net/m0_57236802/article/details/132040172
Recomendado
Clasificación