서로 참조하는 유형 힌트로 클래스를 정의하면 순환 종속성 오류가 발생하여 유형 힌트가 무효화될 수 있습니다. 이 오류는 현재 네임스페이스 내에서 클래스 이름을 찾을 수 없음을 나타내는 NameError로 나타나는 경우가 많습니다.
다음 코드 조각을 고려하세요.
<code class="python">class Server: def register_client(self, client: Client) pass class Client: def __init__(self, server: Server): server.register_client(self)</code>
이 예제에서 Server 클래스는 Register_client 메소드에 대한 인수로 Client 객체를 기대하는 반면, Client 클래스는 생성자에서 Server 인스턴스를 기대합니다. 그러나 이 순환 종속성으로 인해 코드가 NameError: 'Client'라는 이름이 정의되지 않았습니다.
이 문제에 대한 한 가지 해결책은 전방 참조를 사용하는 것입니다. 유형 힌트 내에서 Client를 문자열로 선언하면 인터프리터가 나중에 종속성을 해결할 수 있습니다.
<code class="python">class Server: def register_client(self, client: 'Client') pass</code>
또는 Python 3.7에서는 연기된 주석 평가를 도입했습니다. 모듈 시작 부분에 future import from __future__ import 주석을 추가하면 주석이 추상 구문 트리의 문자열 표현으로 저장됩니다. 이러한 주석은 나중에 Typing.get_type_hints()를 사용하여 해결할 수 있습니다.
<code class="python">from __future__ import annotations class Server: def register_client(self, client: Client) pass</code>
위 내용은 효과적인 유형 적용을 위해 유형 힌트의 순환 종속성을 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!