Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
5862

Разница между функциями type() и isinstance() в Python

В Python функции type() и isinstance() используются для проверки типа объекта. Однако есть несколько ключевых различий в их использовании и поведении. Функция

В Python функции type() и isinstance() используются для проверки типа объекта. Однако есть несколько ключевых различий в их использовании и поведении.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Функция type()

Функция type() возвращает тип объекта, который передается ей в качестве аргумента. Это обычно используется для определения, к какому классу принадлежит определенный объект.

Например, можно проверить, является ли переменная целым числом или строкой:

x = 10
print(type(x) == int)  # вернет True

y = "Hello"
print(type(y) == str)  # вернет True

Функция isinstance()

Функция isinstance() проверяет, является ли объект экземпляром указанного класса или его подкласса. Если требуется проверить, принадлежит ли объект к определенному классу или его подклассу, лучше использовать isinstance().

Например, можно проверить, является ли переменная экземпляром класса int или его подкласса:

x = 10
print(isinstance(x, int))  # вернет True

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Курсы по программированию
Помогаем получить новую профессию с гарантией трудоустройства!
Подробнее
Курсы по программированию

Основное различие

Основное различие между этими двумя функциями заключается в том, что type() не учитывает наследование (то есть не считает объект экземпляром класса, если он является экземпляром подкласса), в то время как isinstance() это делает.

Вот пример для демонстрации:

class MyInt(int):
    pass

x = MyInt()

print(type(x) == int)  # вернет False
print(isinstance(x, int))  # вернет True

В этом примере x является экземпляром MyInt, который является подклассом int. type() не считает x экземпляром int, потому что x прямо не принадлежит классу int. С другой стороны, isinstance() считает x экземпляром int, потому что MyInt является подклассом int.

В общем случае, когда требуется учесть наследование, лучше использовать isinstance().

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий