07 Июл 2023
2 мин
4302

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

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

Содержание

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

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

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

Основное различие между этими двумя функциями заключается в том, что 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().

Содержание

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

Определи профессию по рисунку