그 중 사용자 지정 class에 대한 type hint Generic

[정의]

# <https://docs.python.org/ko/3/library/typing.html>
from typing import TypeVar, Generic
from logging import Logger

T = TypeVar('T')

class LoggedVar(Generic[T]):
    def __init__(self, value: **T**, name: str, logger: Logger) -> None:
        self.name = name
        self.logger = logger
        self.value = value

    def set(self, new: **T**) -> None:
        self.log('Set ' + repr(self.value))
        self.value = new

    def get(self) -> **T**:
        self.log('Get ' + repr(self.value))
        return self.value

    def log(self, message: str) -> None:
        self.logger.info('%s: %s', self.name, message)

class LoggedVar(Generic[T]): 의 의미는 class LoggedVar가 단일형 매개변수 T를 취한다는 것을 정의해줍니다

T를 클래스 바디 내에서 type으로 유효하게 합니다. 사용을 보면 더 잘 이해할 수 있습니다

[사용]

from collections.abc import Iterable

def zero_all_vars(vars: Iterable[LoggedVar[int]]) -> None:
    for var in vars:
        var.set(0)