Python에서 타입힌트를 작성하다 보면 클래스 내부에서 자기 자신을 타입으로 지정해야 할 때가 있습니다. 예를 들어, 연결 리스트 노드(Node)처럼 자기 자신을 가리키는 구조가 대표적입니다. 하지만 Python은 클래스를 정의하는 도중에는 아직 해당 클래스 이름이 완전히 인식되지 않기 때문에, 바로 Node를 타입힌트로 쓰면 NameError 또는 Unresolved reference 경고가 발생할 수 있습니다. 이를 해결하기 위해 Python은 문자열 형태의 forward reference 문법을 제공합니다.
문자열("클래스명")을 이용한 타입힌트
클래스 안에서 자기 자신을 타입으로 지정할 때는 클래스 이름을 문자열로 감싸야 합니다.
class Node:
def __init__(self, value: int, next_node: "Node" = None) -> None:
self.value = value
self.next_node = next_node
여기서 next_node: "Node"는 “다음 노드는 Node 타입일 수 있다”라는 의미입니다.
문자열로 감쌌기 때문에 아직 정의 중인 Node 클래스도 정상적으로 타입힌트로 사용할 수 있습니다.
실제 동작 예시
node1 = Node(10)
node2 = Node(20, node1)
print(node2.value) # 20
print(node2.next_node.value) # 10
이제 연결 리스트처럼 자기 자신을 참조하는 구조를 타입힌트로 안전하게 표현할 수 있습니다.
정리
- 클래스 내부에서 자기 자신을 타입힌트할 때는 문자열("클래스명")로 감싸야 함
자기 참조 타입힌트는 자료구조(연결 리스트, 트리)나 빌더 패턴 등에서 매우 유용하게 쓰이니 꼭 익혀두면 좋습니다.
'파이썬 > 타입 힌트' 카테고리의 다른 글
| Python 타입힌트: Type Alias와 TypedDict 활용하기 (0) | 2025.09.10 |
|---|---|
| Python 타입힌트: Final로 상수 정의하기 (0) | 2025.09.10 |
| Python 타입힌트: Optional 타입 활용법 (0) | 2025.09.10 |
| Python 타입힌트: Union 타입 활용법 (0) | 2025.09.10 |
| Python 타입힌트: 클래스 타입 활용법 (0) | 2025.09.10 |