Como evitar variáveis globais
Ao ler documentação python e várias listas de discussão, eu sempre leio o que parece um dogma. Variáveis globais devem ser evitadas como o inferno, elas são design pobre ... OK, porque não? Mas há algumas situações reais em que não consigo evitar esse padrão.
Digamos que eu tenha uma GUI da qual vários arquivos possam ser carregados no menu principal. Os objetos de arquivo correspondentes aos arquivos carregados podem ser usados ao longo de toda a GUI (por exemplo, um visualizador de imagens que exibirá uma imagem e no qual várias ações podem ser realizadas através de diferentes diálogos / plugins).
Existe algo realmente errado com a construção do seguinte design:
Menu.py -> o arquivo será carregado daquiMain.py -> os objetos de arquivo carregados podem ser usados aquiDialog1.py -> ou aquiDialog2.py -> ou láDialog3.py -> ou lá...Globals.pyonde Globals.py irá armazenar um dicionário cuja chave é o nome dos arquivos carregados e o valor do arquivo correspondente. Então, a partir daí, a parte diferente do código que precisa desses dados acessaria através de referências fracas.
Desculpe se minha pergunta parece (ou é) estúpida, mas você vê alguma alternativa elegante ou livre de global? Uma maneira seria encapsular o dicionário de dados carregado na classe de aplicativo principal do Main.py considerando-o como a parte de acesso central da GUI. No entanto, isso também traria algumas complicações, já que essa classe deve ser facilmente acessível a partir de todos os diálogos que precisam dos dados, mesmo que sejam necessariamente filhos diretos dela.
muito obrigado pela sua ajuda