Python에서 순환 가져오기 방지
Python에서 순환 가져오기는 둘 이상의 클래스나 모듈이 서로 의존할 때 발생할 수 있으며, 종종 오류를 가져옵니다. 두 클래스가 서로의 인스턴스를 생성자 인수로 사용하도록 하려는 특정 사례에서 이 문제를 방지하려면 다음 접근 방식을 고려하세요.
1. 공유 참조 모듈:
두 클래스를 모두 가져오고 각각에 대한 참조를 제공하는 별도의 모듈(예: reference.py)을 만듭니다.
# reference.py from class_a import ClassA from class_b import ClassB
그런 다음 클래스 정의에서 다음을 수행합니다. 참조 모듈을 가져와서 이를 사용하여 다른 클래스의 인스턴스에 액세스합니다:
# class_a.py from reference import ClassB class ClassA: def __init__(self, class_b_instance): self.class_b_instance = class_b_instance
2. 추상 기본 클래스(ABC):
클래스 간의 공통 인터페이스에 대한 추상 기본 클래스를 정의하고 두 클래스 모두 이 인터페이스를 구현하도록 합니다.
# abc.py from abc import ABC, abstractmethod class Base(ABC): @abstractmethod def get_instance(self): pass
# class_a.py from abc import ABC from reference import ClassB class ClassA(Base): def __init__(self, class_b_instance): self.class_b_instance = class_b_instance def get_instance(self): return self.class_b_instance
3. 어댑터 패턴:
한 클래스의 인스턴스를 다른 클래스의 인터페이스로 변환하는 어댑터 클래스를 만듭니다.
# adapter.py class Adapter: def __init__(self, instance): self.instance = instance def get_instance(self): return self.instance
그런 다음 클래스 정의에서 어댑터를 사용하여 다음을 수행합니다. 다른 클래스의 인스턴스 래핑:
# class_a.py from adapter import Adapter from reference import ClassB class ClassA: def __init__(self, class_b_instance): self.class_b_instance = Adapter(class_b_instance)
위 내용은 클래스가 서로 의존하는 경우 순환 가져오기를 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!