isinstance()
. Она принимает два аргумента: объект и класс (или кортеж классов), и возвращает True
, если объект является экземпляром этого класса (или одного из классов в кортеже), и False
в противном случае.
isinstance(my_object, MyClass)
Для проверки, является ли объект экземпляром конкретного класса в Python, можно использовать две основные функции:
isinstance(object, classinfo)
: Это встроенная функция, которая возвращает True
, если object
является экземпляром класса classinfo
или подклассом класса classinfo
. classinfo
может быть как одним классом, так и кортежем классов. Если object
не является экземпляром указанных классов или их подклассов, возвращается False
.
type(object) is Class
: Этот подход возвращает True
только если object
является именно экземпляром класса Class
, а не его подкласса. В большинстве случаев предпочтительнее использовать isinstance
, поскольку он корректно обрабатывает наследование.
Примеры:
class Animal:
pass
class Dog(Animal):
pass
animal = Animal()
dog = Dog()
print(isinstance(animal, Animal)) # Вывод: True
print(isinstance(dog, Animal)) # Вывод: True (Dog - подкласс Animal)
print(isinstance(animal, Dog)) # Вывод: False
print(type(animal) is Animal) # Вывод: True
print(type(dog) is Animal) # Вывод: False
print(type(dog) is Dog) # Вывод: True
Рекомендации:
isinstance()
.type(object) is Class
стоит только в тех ситуациях, когда необходимо строго проверить, что объект принадлежит именно указанному классу, а не его подклассу. Такие ситуации встречаются реже.object
.