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