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을 사용하면 협업 시 “이 값은 절대 바뀌면 안 된다”라는 규칙을 코드 차원에서 명확하게 전달할 수 있습니다.
'파이썬 > 타입 힌트' 카테고리의 다른 글
| Python 타입힌트: 제네릭(Generic) 클래스 활용하기 (0) | 2025.09.10 |
|---|---|
| Python 타입힌트: Type Alias와 TypedDict 활용하기 (0) | 2025.09.10 |
| Python 타입힌트: 클래스 내부에서 자기 자신 참조하기 (0) | 2025.09.10 |
| Python 타입힌트: Optional 타입 활용법 (0) | 2025.09.10 |
| Python 타입힌트: Union 타입 활용법 (0) | 2025.09.10 |