>  기사  >  백엔드 개발  >  Python에서 Mixin 클래스를 사용하여 유형 힌트에 대한 순환 가져오기 문제를 해결하는 방법은 무엇입니까?

Python에서 Mixin 클래스를 사용하여 유형 힌트에 대한 순환 가져오기 문제를 해결하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-23 13:35:30775검색

How to Resolve Cyclic Import Issues for Type Hinting with Mixin Classes in Python?

순환 가져오기 없이 Python 유형 힌트

문제:

순환 종속성이 있는 모듈을 가져오면 유형 힌트가 mixin 클래스와 함께 사용될 때 런타임 예외.

세부 정보:

Python 3.4에서 클래스는 두 개의 파일(main.py 및 mymixin)로 분할됩니다. .py), 여기서 mymixin.py에는 main.py의 메인 클래스(예: Main(object, MyMixin):)에서 상속되는 mixin 클래스가 포함되어 있습니다. MyMixin 메서드의 유형 힌트를 사용하려면 반환 유형을 'Main'으로 지정해야 하므로 순환 가져오기 문제가 발생합니다.

Python 3.4 해결 방법:

순환 가져오기를 우회하는 동안 유형 힌트에는 전방 선언을 사용하는 사용자 정의 접근 방식이 사용됩니다. 'typing' 모듈의 'TYPE_CHECKING' 상수를 사용하면 런타임 중에 유형 주석 블록 내의 import 문이 무시됩니다. 'Main' 유형 주석도 문자열로 변환되어 이를 앞으로 선언합니다.

Python 3.7 솔루션(PEP 563):

'from 사용 future import 주석의 import 문을 사용하면 모든 유형 주석이 문자열이 되고 런타임 평가 중에 건너뛰므로 정방향 선언 구문이 더 깔끔해집니다.

이러한 해결 방법에도 불구하고 유형 힌트가 있는 믹스인을 사용하려면 여전히 구조 조정이 필요할 수 있습니다. PyCharm과 mypy 유형 검사가 모두 예상대로 작동합니다. Mypy는 메인 클래스와 믹스인 클래스가 모두 상속되는 ABC를 생성할 것을 권장합니다.

위 내용은 Python에서 Mixin 클래스를 사용하여 유형 힌트에 대한 순환 가져오기 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.