Resolução de dependência circular em Python
Em Python, é possível encontrar dependências circulares quando os módulos dependem uns dos outros para sua definição. Um desses cenários está presente quando dois arquivos, node.py e path.py, definem as classes Node e Path, respectivamente, com cada uma referenciando a outra.
Inicialmente, path.py importou node.py para acessar o Node objeto. No entanto, uma modificação recente introduziu um método no Node que faz referência ao objeto Path. Isso criou uma dependência circular, levando a uma exceção ao importar path.py.
Existem várias abordagens para resolver dependências circulares:
1. Referência direta:
Use uma referência direta em um módulo para declarar o nome da classe do outro módulo sem importá-lo. Nesse caso, path.py declararia a classe Node com uma referência direta:
from typing import ForwardRef Node = ForwardRef("Node") class Path: def method_needs_node(self, node: Node): ...
2. Importação lenta:
Importa o módulo necessário somente quando for necessário em uma função. Isso é particularmente adequado quando a dependência é necessária em apenas uma ou algumas funções:
# in node.py from path import Path class Node ... # in path.py class Path: def method_needs_node(): from node import Node n = Node() ...
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