Python Glossary English

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Сообщить о неточности