Подтверждение с использованием isinstance()
На этом этапе вы узнаете, как использовать функцию isinstance() в Python для проверки, является ли объект экземпляром определенного класса или типа. Это более надежный и рекомендуемый способ проверки типов данных по сравнению с использованием функции type().
Функция isinstance() принимает два аргумента: объект, который нужно проверить, и класс или тип, с которым нужно сравнить. Она возвращает True, если объект является экземпляром указанного класса или типа, и False в противном случае.
-
Откройте редактор VS Code в среде LabEx.
-
Создайте новый файл с именем isinstance_example.py в директории ~/project.
## Check if a variable is an integer
x = 10
print(isinstance(x, int))
## Check if a variable is a float
y = 3.14
print(isinstance(y, float))
## Check if a variable is a string
z = "Hello"
print(isinstance(z, str))
## Check if a variable is a boolean
a = True
print(isinstance(a, bool))
## Check if a variable is a list
b = [1, 2, 3]
print(isinstance(b, list))
## Check if a variable is a tuple
c = (1, 2, 3)
print(isinstance(c, tuple))
## Check if a variable is a set
d = {1, 2, 3}
print(isinstance(d, set))
## Check if a variable is a dictionary
e = {"name": "Alice", "age": 30}
print(isinstance(e, dict))
-
Запустите скрипт с помощью команды python в терминале:
python ~/project/isinstance_example.py
Вы должны увидеть следующий вывод:
True
True
True
True
True
True
True
True
Все переменные являются экземплярами типов, которые мы проверяли, поэтому функция isinstance() вернула True в каждом случае.
Функция isinstance() особенно полезна при работе с наследованием. Если класс наследует от другого класса, объект подкласса также считается экземпляром родительского класса.
-
Добавьте следующий код в файл isinstance_example.py:
class Animal:
pass
class Dog(Animal):
pass
my_dog = Dog()
## Check if my_dog is an instance of Dog
print(isinstance(my_dog, Dog))
## Check if my_dog is an instance of Animal
print(isinstance(my_dog, Animal))
-
Запустите скрипт еще раз:
python ~/project/isinstance_example.py
Вы должны увидеть следующий вывод:
True
True
В этом примере класс Dog наследует от класса Animal. Поэтому объект my_dog является экземпляром как класса Dog, так и класса Animal.
В целом, использование функции isinstance() предпочтительнее, чем использование функции type(), так как оно корректно обрабатывает наследование и более гибко.