Что такое __class_getitem__?

Senior
113 просмотров
AFK Offer AI

__class_getitem__ — позволяет использовать синтаксис MyClass[Type]. class MyContainer: def __class_getitem__(cls, item): return cls. MyContainer[int] — вызывает __class_getitem__. Используется для generic типов: list[int], dict[str, int]. До 3.9 нужно было typing.List[int]. С 3.9+ встроенные типы поддерживают []. Для своих классов: наследуйся от Generic[T] или реализуй __class_getitem__. Типизация: class Stack(Generic[T]): def push(self, item: T). Runtime: __class_getitem__ может возвращать что угодно, mypy проверяет типы статически. PEP 560 — механизм.

Следующий вопрос

Что такое async iterator?