Python 3.12+typesфункция
types.get_original_bases()
динамическое создание классов
Возвращает базы класса в том виде, в каком их написали в class: Generic[T] вместо Generic. Обычный __bases__ эти подробности теряет.
Синтаксис
types.get_original_bases(cls)
После __mro_entries__ в __bases__ остаётся голый Generic, и узнать, с какими параметрами типа наследовался класс, оттуда нельзя. Функция читает __orig_bases__, а для классов без него возвращает __bases__. Это нужно библиотекам сериализации и проверки типов, которые выясняют, например, что Box наследует Generic[int].
Примеры
# Python 3.12+
import types
import typing
T = typing.TypeVar('T')
class Box(typing.Generic[T]):
pass
print(Box.__bases__) # → (<class 'typing.Generic'>,)
print(types.get_original_bases(Box)) # → (typing.Generic[~T],)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности