파이썬/타입 힌트

Python 타입힌트: Final로 상수 정의하기

Data Jun 2025. 9. 10. 15:41

Python에서 변수는 기본적으로 언제든지 값이 변경될 수 있습니다.
하지만 코드 작성 시 “이 값은 한 번 정해지면 바뀌면 안 된다”라는 의도를 나타내고 싶을 때가 있습니다.

이때 사용하는 타입힌트가 바로 Final 입니다.

 

Final 기본 사용법

Final은 typing 모듈에서 제공되며, 특정 변수가 상수(재할당 불가) 임을 명시합니다.

from typing import Final

PI: Final = 3.14159
MAX_USERS: Final[int] = 100

여기서 PI와 MAX_USERS는 상수로 취급됩니다. 실제로 Python 자체가 값 변경을 막는 것은 아니지만, IDE나 타입 체커(MyPy 등)에서 경고를 주어 안정성을 높여줍니다.

 

잘못된 사용 예시

PI: Final = 3.14159
PI = 3.14  # 타입 체커에서 에러 발생 (상수 변경 불가)

즉, Final은 개발자 의도를 코드에 표현하여, 나중에 실수로 값을 바꾸지 않도록 도와줍니다.

 

클래스에서의 Final

Final은 클래스 속성이나 메서드에도 사용할 수 있습니다.

from typing import Final

class Config:
    VERSION: Final = "1.0.0"  # 상수 클래스 변수

또한 메서드에 @final 데코레이터를 붙이면, 상속 시 재정의를 막을 수도 있습니다.

from typing import final

class Base:
    @final
    def run(self) -> None:
        print("기본 실행")

class Child(Base):
    def run(self) -> None:   # 타입 체커에서 에러 발생 (재정의 불가)
        print("재정의 시도")

 

정리

  • Final은 상수 정의 시 사용 → 변수 재할당을 막는 개발 의도 표현
  • 실제 런타임 제약은 없지만, 타입 체커/IDE가 경고 제공
  • 클래스 변수에도 적용 가능
  • @final 데코레이터로 메서드 재정의 차단 가능

 Final을 사용하면 협업 시 “이 값은 절대 바뀌면 안 된다”라는 규칙을 코드 차원에서 명확하게 전달할 수 있습니다.