파이썬/타입 힌트

Python 타입힌트: 클래스 내부에서 자기 자신 참조하기

Data Jun 2025. 9. 10. 15:37

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

이제 연결 리스트처럼 자기 자신을 참조하는 구조를 타입힌트로 안전하게 표현할 수 있습니다.

 

정리

  • 클래스 내부에서 자기 자신을 타입힌트할 때는 문자열("클래스명")로 감싸야 함

자기 참조 타입힌트는 자료구조(연결 리스트, 트리)나 빌더 패턴 등에서 매우 유용하게 쓰이니 꼭 익혀두면 좋습니다.