isinstance Python что это — это встроенная функция для проверки, является ли объект экземпляром заданного класса или одного из нескольких классов. Ее часто используют, когда код должен по-разному обрабатывать числа, строки, списки, собственные классы или объекты с наследованием.
На практике isinstance() помогает быстро и понятно проверить тип без сложных сравнений и заранее отсеять ошибки перед опасной операцией.
Что делает isinstance()
isinstance() возвращает True, если объект принадлежит указанному классу или любому классу из кортежа классов, и False в остальных случаях. Такой подход удобнее простого сравнения типов, когда нужно учитывать наследование.
Базовый синтаксис выглядит так:
isinstance(объект, класс)
Пример:
isinstance(42, int) — True
isinstance(42, str) — False
Если объект создан на основе дочернего класса, isinstance() тоже вернет True для родительского класса. Это главное отличие от проверки через type().
Когда использовать isinstance()
isinstance() полезна там, где нужно выбрать разную логику обработки в зависимости от типа данных. Чаще всего ее используют в валидации входных значений, работе с пользовательскими объектами и обработке нескольких допустимых типов сразу.
- проверка чисел, строк и списков перед вычислениями;
- защита от ошибок при работе с внешними данными;
- поддержка нескольких типов в одной функции;
- проверка объектов в иерархии классов;
- упрощение читаемости условных конструкций.
Если функция принимает только определенные типы, isinstance() помогает сразу вернуть понятную ошибку или выбрать безопасную ветку выполнения.
Проверка нескольких классов
isinstance() умеет проверять объект сразу по нескольким классам, если передать кортеж типов. Это удобно, когда одна и та же операция допустима для разных, но совместимых значений.
Пример:
isinstance(value, (int, float))
Такой вариант вернет True и для целого числа, и для числа с плавающей точкой. Если проверка не проходит, стоит либо расширить список допустимых типов, либо обработать значение отдельно.
Чем isinstance() отличается от type()
isinstance() учитывает наследование, а type() проверяет точный класс объекта. Из-за этого isinstance() чаще подходит для прикладного кода, где важна не только конкретная реализация, но и совместимость через базовый класс.
Например, если объект создан как экземпляр дочернего класса, type(объект) == РодительскийКласс вернет False, а isinstance(объект, РодительскийКласс) — True.
Проверка через type() полезна только тогда, когда нужен именно точный тип без учета наследников. Если результат проверки не совпадает с ожиданием, сначала стоит посмотреть, не используется ли в коде дочерний класс.
Типичные ошибки при использовании
isinstance() работает предсказуемо, но ошибки обычно связаны не с самой функцией, а с неверным ожиданием от проверки. Чаще всего проблемы возникают, когда разработчик путает точный тип и наследование или передает не тот набор классов.
- проверяют через type(), хотя нужен учет наследования;
- передают не класс, а строку или другое значение;
- забывают про кортеж типов, когда допустимы несколько вариантов;
- ожидают, что функция проверит внутреннее содержимое объекта, а не его класс.
Если проверка ведет себя неожиданно, полезно сначала вывести type(объект) и убедиться, что объект действительно создан тем типом, который вы ожидаете.
Короткий вывод
isinstance Python что это — это простой и надежный способ проверить, принадлежит ли объект нужному классу с учетом наследования. Функция делает код понятнее, помогает избежать ошибок и особенно полезна в валидации данных и обработке разных типов в одной логике.

