isinstance(): Проверка типовВ динамически типизированных языках нам особенно важно знать тип объекта, которым мы оперируем. С этим помогают две встроенные функции —
type() и isinstance(), и мы поговорим сегодня о второй из них.
isinstance(object, classinfo)
—
object: объект, тип которого вы хотите проверить—
classinfo: класс, тип или кортеж типов
# Является ли 42 целочисленным значением?
isinstance(42, int) # True
# Относится ли "hello" к одному из типов str / list (логическое «ИЛИ»)?
isinstance("hello", (str, list)) # True
isinstance() vs type()
Поначалу может показаться, что
type() делает то же самое:
type(42) == int # True
Но
isinstance(), в свою очередь, учитывает наследование:
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
type(dog) == Animal # False
isinstance(dog, Animal) # True
Это делает
isinstance() предпочтительным выбором при работе с иерархиями классов.#основы