Функция Python isinstance()

Python3 内置函数Встроенные функции Python3


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

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

Определение термина: isinstance 是 is an instance(是一个实例)的缩写。


Базовый синтаксис и параметры

Синтаксис

isinstance(object, classinfo)

Описание параметра

  • Параметр object:
    • Тип: любой объект
    • Описание: объект для проверки.
  • Параметр classinfo:
    • Тип: тип, кортеж типов или абстрактный базовый класс
    • Описание: тип, с которым выполняется проверка. Может быть отдельным типом или кортежем типов.

Описание функций

  • Возвращаемое значение: Возвращает логическое значениеTrueилиFalse。
  • Особенность: Возвращает True, если object является экземпляром подкласса classinfo.

Примеры

Пример 1: Базовое использование

Пример

# Проверка базовых типов
print(isinstance(123, int))           # Вывод: True
print(isinstance(3.14, float))        # Вывод: True
print(isinstance("hello", str))       # Вывод: True
print(isinstance([1, 2], list))       # Вывод: True
print(isinstance({"a": 1}, dict))     # Вывод: True

# Проверить None
print(isinstance(None, type(None)))   # Вывод: True

# Проверить логические значения (примечание: bool — подкласс int)
print(isinstance(True, bool))         # Вывод: True
print(isinstance(True, int))          # Вывод: True (потому что bool наследуется от int)

Ожидаемый вывод:

True
True
True
True
True
True
True
True

Анализ кода:

  1. Он может проверять различные базовые типы.
  2. bool является подклассом int, поэтому True/False также являются экземплярами int.

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

Пример

# Проверка нескольких типов (с использованием кортежа)
value = 42

print(isinstance(value, (int, float)))    # Вывод: True
print(isinstance(value, (str, list)))     # Вывод: False

# Проверка смеси нескольких типов
value = "hello"
print(isinstance(value, (int, str, bytes))) # Вывод: True

# Используется в условных операторах
def process_data(data):
    if isinstance(data, (list, tuple)):
        return sum(data)
    elif isinstance(data, (int, float)):
        return data * 2
    else:
        return str(data)

print(process_data([1, 2, 3]))     # Вывод: 6
print(process_data((1, 2, 3)))    # Вывод: 6
print(process_data(10))           # Вывод: 20
print(process_data(3.14))         # Вывод: 6.28
print(process_data("hello"))      # Вывод: hello

Ожидаемый вывод:

True
False
True
6
6
20
6.28
hello

Анализ кода:

  • Второй параметр может быть кортежем типов, что позволяет проверять несколько типов одновременно.
  • Это очень удобно при работе с несколькими типами данных.

Пример 3: С наследованием классов

Пример

# Пример наследования классов
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

# Создание экземпляра
dog = Dog()
cat = Cat()
animal = Animal()

# isinstance учитывает наследование
print(isinstance(dog, Dog))      # Вывод: True
print(isinstance(dog, Animal))   # Вывод: True (экземпляр подкласса также является экземпляром родительского класса)
print(isinstance(dog, Cat))      # Вывод: False

print(isinstance(cat, Animal))   # Вывод: True
print(isinstance(animal, Dog))   # Вывод: False

Ожидаемый вывод:

True
True
False
True
False

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


Python3 内置函数Встроенные функции Python3


Другие расширения