Олег Марков
Как использовать функцию isinstance в Python
Введение
Функция isinstance — встроенный инструмент Python для проверки, принадлежит ли объект определённому типу или классу. Это важно для валидации данных, обработки ошибок и обеспечения корректной работы функций с разными типами объектов.
В этой статье мы подробно разберём синтаксис isinstance, примеры работы с встроенными и пользовательскими классами, а также типичные сценарии использования.
Если вы хотите детальнее изучить работу с типами данных и объектно-ориентированное программирование в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Синтаксис функции isinstance
isinstance(object, classinfo)object— объект, тип которого нужно проверить.classinfo— тип или кортеж типов, с которыми сравнивается объект.
Возвращает True, если объект является экземпляром указанного класса или его подкласса, иначе False.
Примеры использования с встроенными типами
print(isinstance(10, int)) # True
print(isinstance(10.5, float)) # True
print(isinstance("hello", str)) # True
print(isinstance(10, float)) # FalseПроверка с несколькими типами через кортеж:
value = 5
print(isinstance(value, (int, float))) # True, value — intПрименение с пользовательскими классами
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True, Dog наследует Animal
print(isinstance(dog, object)) # True, все объекты наследуют objectПрактическое использование
isinstance часто применяется для валидации аргументов функций:
def process(value):
if not isinstance(value, int):
raise TypeError("Ожидалось целое число")
return value * 2
print(process(5)) # 10
# process("5") # TypeErrorТакже удобно при обработке сложных коллекций:
data = [1, "two", 3.0, [4]]
numbers = [x for x in data if isinstance(x, (int, float))]
print(numbers) # [1, 3.0]Частые ошибки
- Использование
type(obj) == SomeTypeвместоisinstance, что не учитывает наследование. - Передача некорректного второго аргумента (не типа или кортежа типов).
- Путаница с проверкой mutable/immutable объектов.
Часто задаваемые вопросы
Можно ли использовать isinstance для проверки нескольких типов сразу? Да, передайте кортеж типов:
isinstance(obj, (int, float, complex)).Проверяет ли isinstance наследование? Да, функция вернёт True для экземпляров подклассов.
В чём отличие от type()?
type()возвращает точный тип объекта, не учитывая наследование;isinstanceпроверяет принадлежность к классу и его подклассам.
Заключение
Функция isinstance — ключевой инструмент для проверки типов объектов, валидации аргументов и безопасной работы с данными. Она полезна как при работе с встроенными типами, так и с пользовательскими классами, особенно в контексте объектно-ориентированного программирования.
Для системного изучения проверки типов, объектно-ориентированного программирования и функциональных возможностей Python рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев