# hasattr()

`hasattr()` - это встроенная функция в Python, которая проверяет, есть ли указанный атрибут у объекта.

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

* Проверка наличия атрибута (переменной, метода или другого объекта) у объекта.
* Позволяет писать более гибкий и расширяемый код, проверяя доступность атрибутов перед их использованием.

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

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

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

* Принимает два аргумента: `object` и `name`.
* `object` - объект, для которого нужно проверить наличие атрибута.
* `name` - строка, содержащая имя атрибута.

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

1. Проверка наличия атрибута у объекта
2. Использование `hasattr()` для проверки перед доступом к атрибуту
3. Проверка наличия метода у объекта

{% tabs %}
{% tab title="1." %}

```python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 25)
print(hasattr(person, "name"))  # Вывод: True
print(hasattr(person, "occupation"))  # Вывод: False
```

{% endtab %}

{% tab title="2." %}

```python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.occupation = None

person = Person("Bob", 30)
if hasattr(person, "occupation"):
    print(person.occupation)
else:
    print("Occupation attribute does not exist")
```

{% endtab %}

{% tab title="3." %}

```python
class Vehicle:
    def start(self):
        print("Starting the vehicle.")

car = Vehicle()
print(hasattr(car, "start"))  # Вывод: True
print(hasattr(car, "stop"))   # Вывод: False
```

{% endtab %}
{% endtabs %}

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

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

`hasattr()` часто используется в сочетании с другими функциями, такими как `getattr()` (получение значения атрибута) и `setattr()` (установка значения атрибута), для более гибкого управления атрибутами объектов в Python.
