У меня есть два файла, node.py
и path.py
, которые определяют два класса, Node
и Path
, соответственно.
До сегодня, определение для Path
ссылаемый Node
объект, и поэтому я сделал
from node.py import *
в path.py
файл.
Однако с сегодняшнего дня я создал новый метод для Node
это ссылается Path
объект.
У меня были проблемы при попытке импортировать path.py
: Я попробовал его, и когда программа работала и звонила Path
метод, который использует Node
, исключение повысилось о Node
не быть определенным.
Что я делаю?
Я предпочитаю повреждать круговую зависимость путем объявления одной из зависимостей в конструкторе другого зависимого класса. По моему мнению, это сохраняет код более опрятным, и предоставляет легкий доступ ко всем методам, кто требует зависимости.
Так в моем случае у меня есть CustomerService и UserService, которые зависят друг от друга. Я повреждаю круговую зависимость следующим образом:
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)