um método sofisticado de compartilhamento de dados em python

Uma maneira mais sofisticada de compartilhar dados entre os módulos seria por meio de instâncias de classe ou padrões de projeto Singleton.

  1. Classes e Instâncias:

Se os dados que você deseja compartilhar estiverem relacionados, você pode envolvê-los em uma classe. As classes são uma maneira de agrupar dados e funcionalidades.

Aqui está um exemplo simples:

# file: shared_data.py

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

Em outro 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!"

E em um terceiro 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

Isso não funcionará como esperado, porque cada vez que você cria uma nova instância de SharedData, ela possui seu próprio dataatributo.

  1. Padrão Singleton:

O padrão singleton é um padrão de design que restringe a instanciação de uma classe a uma única instância. Isso é útil quando exatamente um objeto é necessário para coordenar ações no sistema. Aqui está um exemplo básico de uma classe 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

Agora, quando você instancia a Singletonclasse várias vezes, sempre obtém a mesma instância:

# file: module1.py

from singleton import Singleton

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

E em um terceiro módulo:

# file: module2.py

from singleton import Singleton

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

Isso funciona como esperado, porque a Singletonclasse sempre retorna a mesma instância.

No entanto, esteja ciente de que variáveis ​​globais e singletons geralmente são considerados um design ruim porque tornam seu programa mais difícil de entender e podem levar a erros sutis. Geralmente é melhor passar dados explicitamente para funções e métodos que precisam deles, mesmo que isso exija mais digitação.

Acho que você gosta

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