# isinstance()

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

**Назначение**:

* Определить, принадлежит ли объект к указанному типу или классу (или его подклассам).

**Возврат**:

* Возвращает `True`, если объект является экземпляром указанного класса или типа, иначе `False`.

**Описание**:

* Принимает два обязательных аргумента:
  1. `object` - объект, который нужно проверить.
  2. `classinfo` - класс, тип или кортеж классов и типов для проверки.
* Может проверять принадлежность к нескольким типам, если `classinfo` - кортеж.
* Учитывает наследование классов.

**Примеры**:

1. Проверка типа _**простых объектов**_
2. Проверка _**пользовательских классов**_
3. Проверка _**нескольких типов**_

{% tabs %}
{% tab title="1" %}
```python
print(isinstance(5, int))  # Выведет: True
print(isinstance("Hello", str))  # Выведет: True
print(isinstance(5.0, float))  # Выведет: True
```
{% endtab %}

{% tab title="2" %}
```python
class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
print(isinstance(dog, Dog))    # Выведет: True
print(isinstance(dog, Animal)) # Выведет: True
```
{% endtab %}

{% tab title="3" %}
```python
x = 5
print(isinstance(x, (int, float, str)))  # Выведет: True
```
{% endtab %}
{% endtabs %}

**Использование**:

* Для безопасной проверки типа объекта перед выполнением специфических операций.
* В полиморфных функциях для определения типа переданного аргумента.
* При обработке данных различных типов.
* В системах типов и проверках соответствия интерфейсам.

Функция `isinstance()` является предпочтительным способом проверки типа объекта в Python, так как она учитывает иерархию наследования классов. Это делает её более гибкой и надёжной по сравнению с прямым сравнением типов (например, `type(obj) == int`). `isinstance()` широко используется в Python для обеспечения безопасности типов и создания более универсального кода, способного работать с различными типами данных.
