Этот атрибут указывает на непараметризованный универсальный класс
Код: Выделить всё
list[int].__origin__ # returns listПолучите версию типа без индекса: для типизирующего объекта формы X[Y, Z, ...] верните X.
Так что обычно практической разницы нет - get_origin(cls) обычно эквивалентен getattr(cls, '__origin__', None). Но я столкнулся как минимум с одним случаем, когда они различались:
Код: Выделить всё
>>> get_origin(Annotated[int, 3])
typing.Annotated
>>> Annotated[int, 3].__origin__
int
[*]Почему существуют два противоречивых определения понятия «происхождение»?
[*]Если меня не волнуют аннотации в моем коде обработки типов во время выполнения, есть ли «правильный способ» их удалить? Например, нужно ли мне разворачивать каждый отдельный объект типа, если get_origin(cls) печатает. С аннотацией: cls = cls.__origin__, чтобы убедиться, что get_origin будет вести себя должным образом?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ias-origin
Мобильная версия