issubclass(class, classinfo)
class
- класс, требующий проверки,classinfo
- класс или кортеж с классами. C версии Python 3.10, несколько классов могут записываться как побитовое или - |
bool
.Функция issubclass()
возвращает True
, если указанный класс class
является подклассом указанного класса (классов) classinfo
(прямым, косвенным или виртуальным) . Класс считается подклассом самого себя.
Функцией issubclass()
можно проверить класс, кортеж с классами, либо рекурсивный кортеж кортежей. Другие типы последовательностей аргументом classinfo
не поддерживаются.
Если аргумент classinfo
не является классом, либо кортежем с классами, а с версии Python 3.10 записью, объединяющей нескольких типов (например int | str
), то возбуждается исключение TypeError
.
Существует аналогичная функция isinstance()
для проверки того же отношения, только для объекта - экземпляра класса. В большинстве случаев isinstance(x, y) == issubclass(type(x), y)
.
Для проверки, является ли объект экземпляром класса (классов) используйте функцию isinstance()
. Дополнительно смотрите встроенную функцию type()
Добавлено в Python 3.10: аргумент classinfo
может иметь тип Union
и и записываться как побитовое или - |
.
>>> issubclass(int, str | object) # True >>> issubclass(str, object | str) # True
class A: pass class B(A): pass >>> issubclass (B, A) # True >>> issubclass (A, B) # False class C: pass # использование кортежа с классами для проверки >>> isinstance (B(), (A, C)) # True # использование записи Union (через побитовое или `|`) >>> isinstance (B(), A | C)) # True
>>> isinstance (B, A) # False
Класс B
унаследован от A
, но он не является его сущностью. Классы сами по себе объекты и функция isinstance()
к ним вполне применима. Класс B
является сущностью класса type
, который в свою очередь, унаследован от object
, поэтому:
>>> isinstance(B, object) # True