"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar importações circulares em Python?

Como evitar importações circulares em Python?

Publicado em 13/11/2024
Navegar:897

How to Prevent Circular Imports in Python?

Prevenção de importação circular em Python

Em Python, importações circulares, onde os módulos dependem uns dos outros para definições, podem levar a erros de tempo de execução. Embora geralmente seja recomendado redesenhar o código para evitar dependências circulares, há casos em que é necessário resolvê-las.

Importações absolutas

Nos casos em que as importações circulares envolvem a importação de módulos , devem ser utilizadas importações absolutas. Isso envolve especificar o caminho completo do módulo, garantindo que a importação seja bem-sucedida, independentemente de onde ele seja colocado na base de código.

Adiar importações

Outra abordagem é adiar as importações até que elas são realmente necessários dentro do código. Ao definir funções ou blocos de código que tratam da importação, você pode evitar problemas de importação circular no nível superior do módulo.

Módulo de importação central

Em uma importação central módulo (geralmente o arquivo __init__.py em um pacote ou pasta), todas as importações necessárias podem ser centralizadas. No entanto, essa abordagem pode levar a instruções de importação longas e desordenadas.

Reorganização do código

Se a dependência circular surgir de objetos dentro de módulos que fazem referência uns aos outros, a reorganização do código pode ser necessário. Movendo referências dentro de funções ou blocos de código, os problemas de importação podem ser resolvidos.

Exemplo

Considere um cenário em que duas classes, A e B, desejam fazer referência uma à outra instâncias de outros. Em vez de defini-las em módulos separados, considere colocar ambas as definições de classe em um único módulo. Alternativamente, se a imutabilidade for uma preocupação, você pode criar uma versão imutável da classe que pode ser usada separadamente sem introduzir dependências circulares.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3