"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 resolver problemas de dependência circular em Python?

Como resolver problemas de dependência circular em Python?

Publicado em 2024-11-08
Navegar:474

How to Resolve Circular Dependency Issues in Python?

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()
    ...
Declaração de lançamento Este artigo foi reimpresso em: 1729326978 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
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