Есть такой интересный модуль как typing
Там используется магия и предоставляется много чудных конструкций
import typing
type(typing.Union) # <class 'typing._SpecialForm'>
при этом можно сделать так
typing.Union[object, object]
мы не создаем обьект Union но при этом он использует метод
__getitem__
а обьект создается уже как-то позже
class Magic:
id: int
def __init__(self, id: int):
self.id = id
@staticmethod
def __getitem__(item: int):
print(item)
return Magic(item)
Magic[1]
как мне сделать так что-бы этот класс заработал как Union в typing?