15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

import app

import dialog

app.configure()

dialog.configure()

dialog.show()

Funciona bem em muitas situações e permite empregar padrões de código como,

por exemplo, injeção de dependência. Às vezes, pode ser difícil estruturar o

código para que seja possível definir um passo explícito para o configure. Ter

duas fases distintas em um módulo também torna seu código mais difícil de ler

porque o local em que definição dos objetos foi feita está muito distante do local

onde está sua configuração.

Importação dinâmica

A terceira solução – e na maioria das vezes a mais simples – para as importações

circulares é usar um comando import dentro de uma função ou método. Isso é

chamado de importação dinâmica porque a importação do módulo acontece

durante a execução do programa, e não nos momentos iniciais em está iniciando

e os módulos estão sendo inicializados.

No exemplo a seguir, redefinimos o módulo dialog para usar importação

dinâmica. A função dialog.show importa o módulo app durante a execução em

vez de o módulo dialog importar app durante sua inicialização.

# dialog.py

class Dialog(object):

# ...

save_dialog = Dialog()

def show():

import app # Importação dinâmica

save_dialog.save_dir = app.prefs.get('save_dir')

# ...

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!