Сообщить об ошибке.

Функция issubclass() в Python, проверяет наследование класса

Позволяет проверить является ли класс унаследованым

Синтаксис:

issubclass(class, classinfo)

Параметры:

  • class - класс, требующий проверки,
  • classinfo - класс или кортеж с классами. C версии Python 3.10, несколько классов могут записываться как побитовое или - |

Возвращаемое значение:

Описание:

Функция 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