# setattr()

Функция `setattr()` в Python используется для установки значения атрибута объекта.

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

* Установить значение атрибута объекта динамически.

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

* Не возвращает значения (возвращает `None`).

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

* Принимает три обязательных аргумента:
  1. `object` - объект, атрибут которого нужно установить.
  2. `name` - строка, содержащая имя атрибута.
  3. `value` - значение, которое нужно присвоить атрибуту.
* Эквивалентна выражению `object.name = value`.
* Может использоваться для создания новых атрибутов или изменения существующих.

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

1. Установка атрибута для _**экземпляра класса**_
2. Изменение _**существующего атрибута**_
3. Использование _**переменной для имени атрибута**_

{% tabs %}
{% tab title="1" %}
```python
class Person:
    pass

p = Person()
setattr(p, 'name', 'Alice')
print(p.name)  

# Выведет: Alice
```
{% endtab %}

{% tab title="2" %}
```python
class Car:
    def __init__(self):
        self.brand = 'Unknown'

car = Car()
setattr(car, 'brand', 'Toyota')
print(car.brand)  

# Выведет: Toyota
```
{% endtab %}

{% tab title="3" %}
```python
obj = object()
attr_name = 'custom_attr'
setattr(obj, attr_name, 42)
print(getattr(obj, attr_name))  

# Выведет: 42
```
{% endtab %}
{% endtabs %}

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

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

Функция `setattr()` особенно полезна, когда необходимо работать с атрибутами объектов динамически, например, когда имена атрибутов определяются во время выполнения программы. Это позволяет создавать более гибкий и обобщенный код. Однако следует использовать эту функцию с осторожностью, так как она может изменять состояние объектов неожиданным образом, если не контролировать имена атрибутов должным образом.
