파이썬/타입 힌트

Python 타입힌트: 클래스 타입 활용법

Data Jun 2025. 9. 10. 15:00

Python의 타입힌트(Type Hint)는 함수뿐 아니라 클래스에도 적용할 수 있습니다.
특히 클래스 타입을 지정해주면 IDE나 에디터에서 자동완성(타입 자동채움) 을 지원해주기 때문에, 더 편리하고 안정적인 코드를 작성할 수 있습니다.

이번 글에서는 클래스 타입에 대한 타입힌트 기본 사용법과 예제를 살펴보겠습니다.

 

클래스 타입 지정 기본

클래스 타입힌트는 해당 인스턴스에 대한 클래스 이름을 직접 적어주면 됩니다.

class User:
    def __init__(self, name: str, age: int) -> None:
        self.name = name
        self.age = age

def get_user_name(user: User) -> str:
    return user.name

u = User("주임", 30)
print(get_user_name(u))  # 출력: "주임"

여기서 get_user_name 함수의 인자 타입을 User로 지정했기 때문에,
IDE에서는 user.를 입력할 때 자동으로 name, age 속성 자동완성을 지원합니다.

 

반환 타입으로 클래스 지정

함수의 반환 타입이 클래스일 경우에도 마찬가지로 클래스 이름을 지정할 수 있습니다.

def create_user(name: str, age: int) -> User:
    return User(name, age)

new_user = create_user("민수", 25)
print(new_user.age)  # 25

이 경우 new_user는 User 타입으로 추론되므로, IDE에서 new_user.를 입력하면 클래스 속성과 메서드 자동완성이 나옵니다.

 

클래스 상속과 타입힌트

상속 관계에서도 마찬가지로 부모 클래스 타입을 지정할 수 있습니다.
이 경우, 부모 클래스를 타입으로 선언하면 자식 클래스 인스턴스도 받을 수 있습니다.

class Animal:
    def speak(self) -> str:
        return "..."

class Dog(Animal):
    def speak(self) -> str:
        return "멍멍!"

def make_sound(animal: Animal) -> str:
    return animal.speak()

print(make_sound(Dog()))  # 출력: "멍멍!"

make_sound 함수는 Animal 타입을 인자로 받지만, 실제로는 Dog 인스턴스를 전달해도 정상적으로 동작합니다.

 

정리

  • 클래스 타입힌트는 인자나 반환 타입에 해당 클래스 이름을 직접 적으면 됨
  • IDE에서 타입을 인식하기 때문에 속성·메서드 자동완성 기능이 강화됨
  • 상속 구조에서는 부모 타입을 지정하면 자식 인스턴스도 받을 수 있음

클래스 타입힌트를 적극적으로 활용하면, 코드의 가독성과 안정성이 높아지고 IDE 지원도 강화됩니다.