isinstance()

Функция isinstance() возвращает True, если объект является экземпляром указанного класса или его подкласса, и False — иначе. В качестве проверяемого типа можно передать кортеж классов, тогда проверка выполняется по всем сразу.

Сигнатура

isinstance(object, classinfo)

Параметры:

  • object — проверяемый объект.

  • classinfo — класс, кортеж классов или union-тип (int | str).

Возвращает: True или False.

Примеры

Базовые проверки:

print(isinstance(7, int))
print(isinstance("hi", str))
print(isinstance(3.14, int))
True
True
False

Проверка по нескольким типам сразу:

for value in (1, 2.5, "x", True):
    print(value, isinstance(value, (int, float)))
1 True
2.5 True
x False
True True

Подкласс тоже считается экземпляром:

class Animal: pass
class Dog(Animal): pass

d = Dog()
print(isinstance(d, Dog))
print(isinstance(d, Animal))
True
True

Валидация аргументов функции:

def double(x):
    if not isinstance(x, (int, float)):
        raise TypeError("ожидалось число")
    return x * 2

print(double(5))
try:
    double("hello")
except TypeError as e:
    print("error:", e)
10
error: ожидалось число

Разбор смешанного списка:

data = [1, "two", 3.0, [4], {"k": 5}]
for item in data:
    if isinstance(item, str):
        print(item, "— строка")
    elif isinstance(item, (int, float)):
        print(item, "— число")
    else:
        print(item, "— коллекция")
1 — число
two — строка
3.0 — число
[4] — коллекция
{'k': 5} — коллекция

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.