"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver problemas de dependencia circular en Python?

¿Cómo resolver problemas de dependencia circular en Python?

Publicado el 2024-11-08
Navegar:984

How to Resolve Circular Dependency Issues in Python?

Resolución de dependencias circulares en Python

En Python, es posible encontrar dependencias circulares cuando los módulos dependen unos de otros para su definición. Uno de esos escenarios se presenta cuando dos archivos, node.py y path.py, definen las clases Node y Path, respectivamente, y cada uno hace referencia al otro.

Inicialmente, path.py importó node.py para acceder al Nodo. objeto. Sin embargo, una modificación reciente introdujo un método en Node que hace referencia al objeto Path. Esto creó una dependencia circular, lo que provocó una excepción al importar path.py.

Hay varios enfoques para resolver dependencias circulares:

1. Referencia directa:

Utilice una referencia directa en un módulo para declarar el nombre de clase del otro módulo sin importarlo. En este caso, path.py declararía la clase Nodo con una referencia directa:

from typing import ForwardRef

Node = ForwardRef("Node")

class Path:
    def method_needs_node(self, node: Node):
        ...

2. Importación diferida:

Importe el módulo requerido solo cuando sea necesario dentro de una función. Esto es particularmente adecuado cuando la dependencia se requiere solo en una o pocas funciones:

# in node.py 
from path import Path
class Node 
    ...

# in path.py
class Path:
  def method_needs_node(): 
    from node import Node
    n = Node()
    ...
Declaración de liberación Este artículo se reimprime en: 1729326978 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3