Проверка с использованием 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()
, так как оно корректно обрабатывает наследование и более гибко.