Saltar al contenido

Dependencia circular en Python

Solución:

Importación de módulos de Python es un gran artículo que explica las importaciones circulares en Python.

La forma más sencilla de solucionar este problema es mover la ruta de importación al final del módulo de nodo.

Otro enfoque es importar uno de los dos módulos solo en la función donde lo necesitas en el otro. Claro, esto funciona mejor si solo lo necesita en una o en una pequeña cantidad de 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()
    ...

Prefiero romper una dependencia circular declarando una de las dependencias en el constructor de la otra clase dependiente. En mi opinión, esto mantiene el código más ordenado y brinda fácil acceso a todos los métodos que requieren la dependencia.

Entonces, en mi caso, tengo un CustomerService y un UserService que dependen el uno del otro. Rompo la dependencia circular de la siguiente manera:

class UserService:

    def __init__(self):
        # Declared in constructor to avoid circular dependency
        from server.portal.services.admin.customer_service import CustomerService
        self.customer_service = CustomerService()

    def create_user(self, customer_id: int) -> User:
        # Now easy to access the dependency from any method
        customer = self.customer_service.get_by_id(customer_id)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *