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() ...
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