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.