>  기사  >  백엔드 개발  >  Python의 유형 힌트에서 순환 종속성을 해결하는 방법은 무엇입니까?

Python의 유형 힌트에서 순환 종속성을 해결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-21 21:48:31537검색

How to Resolve Circular Dependencies in Python's Type Hints?

유형 힌트: 순환 종속성 해결

Python에서는 두 클래스가 유형 힌트에서 서로를 상호 참조할 때 순환 종속성이 발생할 수 있습니다. 이로 인해 클래스 중 하나를 인스턴스화하려고 하면 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>

클라이언트 인스턴스화 시도는 NameError와 함께 실패합니다. 'Client'라는 이름이 아닙니다.

전방 참조 사용

이 순환 종속성을 해결하는 한 가지 방법은 유형 힌트에 전방 참조를 사용하는 것입니다. 이는 아직 정의되지 않은 클래스에 문자열 이름을 제공하여 수행됩니다:

<code class="python">class Server:
    def register_client(self, client: 'Client')
        pass</code>

주석 구문 분석 연기

Python 3.7에 도입된 또 다른 솔루션은 다음과 같습니다. 주석의 런타임 구문 분석을 완전히 연기합니다. 이는 모듈 상단에 다음 가져오기를 추가하여 수행됩니다.

<code class="python">from __future__ import annotations</code>

주석 구문 분석이 연기되면 주석은 표현식에 대한 AST(추상 구문 트리)의 문자열 표현으로 저장됩니다. Typing.get_type_hints()를 사용하면 이전 예제에서 사용된 대로 이러한 주석을 해결하고 전방 참조를 해결할 수 있습니다.

자세한 내용은 PEP 563: 주석 평가 연기를 참조하세요.

위 내용은 Python의 유형 힌트에서 순환 종속성을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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