Python에서 타입 별칭 (2)

발행: (2026년 1월 10일 오후 06:34 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

메모

제한 및 제약

타입 선언 (숫자 예시)

''' Type statement '''
type TA1[T=float] = None
type TA2[T:float=float] = None                 # Bound
type TA3[T:(float, str)=float] = None          # Constraints
# type TA4[T:(float, str)=(float, str)] = None # Constraints # Error
''' Type statement '''

TypeAliasType (숫자 예시)

''' TypeAliasType '''
# from typing import TypeVar, TypeAliasType

# T1 = TypeVar('T1', default=float)
# T2 = TypeVar('T2', bound=float, default=float)         # Bound
# T3 = TypeVar('T3', (float, str), default=float)        # Constraints
# T4 = TypeVar('T4', (float, str), default=(float, str)) # Constraints # Error

# Error for mypy
# TA1 = TypeAliasType('TA1', value=T1 | None, type_params=(T1,))
# TA2 = TypeAliasType('TA2', value=T2 | None, type_params=(T2,))
# TA3 = TypeAliasType('TA3', value=T3 | None, type_params=(T3,))
''' TypeAliasType '''

변수 할당 (숫자 예시)

x1: TA1[object] = None  # No error
x2: TA1[complex] = None # No error
x3: TA1[float] = None   # No error
# x3: TA1 = None        # No error
x4: TA1[int] = None     # No error
x5: TA1[bool] = None    # No error
x6: TA1[str] = None     # No error

y1: TA2[object] = None  # Error
y2: TA2[complex] = None # Error
y3: TA2[float] = None   # No error
# y3: TA2 = None        # No error
y4: TA2[int] = None     # No error
y5: TA2[bool] = None    # No error
y6: TA2[str] = None     # Error

z1: TA3[object] = None  # Error
z2: TA3[complex] = None # Error
z3: TA3[float] = None   # No error
# z3: TA3 = None        # No error
z4: TA3[int] = None     # Error
z5: TA3[bool] = Error
z6: TA3[str] = None     # No error

클래스 계층 구조 (객체 지향 예시)

class A: ...
class B(A): ...
class C(B): ...
class D(C): ...
class E(D): ...

''' Type statement '''
type TA1[T=C] = None
type TA2[T:C=C] = None                 # Bound
type TA3[T:(C, str)=C] = None          # Constraints
# type TA4[T:(C, str)=(C, str)] = None # Constraints # Error
''' Type statement '''

TypeAliasType (객체 지향 예시)

''' TypeAliasType '''
# from typing import TypeVar, TypeAliasType

# T1 = TypeVar('T1', default=C)
# T2 = TypeVar('T2', bound=C, default=C)       # Bound
# T3 = TypeVar('T3', C, str, default=C)        # Constraints
# T4 = TypeVar('T4', C, str, default=(C, str)) # Constraints # Error
Back to Blog

관련 글

더 보기 »

Python의 NewType

개요 NewType은 정적 타입 검사기(예: mypy)에서 별개의 타입으로 취급되는 고유한 타입을 생성할 수 있게 하며, 런타임에서는 해당 타입의 별칭으로 동작합니다.

문제 10: 중복 제거

문제 설명 우리는 리스트에서 중복을 제거하면서 원래 요소들의 순서를 유지하는 함수를 필요로 합니다. 예시: `remove_duplicates` 1, 2, 2, 3...