setattr

Функция setattr() задаёт значение атрибута объекта.

Синтаксис

setattr(object, name, value)

Аргументы

  • object:
    • Что означает: Объект, атрибут которого нужно изменить.
    • Возможные значения: Любой объект.
  • name:
    • Что означает: Имя атрибута (строка).
    • Возможные значения: Любая строка.
  • value:
    • Что означает: Значение, которое нужно присвоить атрибуту.

Возвращаемое значение

Ничего не возвращает. Изменяет объект object, задавая значение его атрибуту.

Примеры использования

class MyClass:
    pass

obj = MyClass()
setattr(obj, "attr", 42)
print(obj.attr)  # Вывод: 42

Эквивалентный код

def pyplanet_setattr(obj, name, value):
    obj.__dict__[name] = value

Частые ошибки

  1. Попытка изменить атрибут, недоступный для записи:

    class MyClass:
        __slots__ = []
    
    obj = MyClass()
    setattr(obj, "attr", 42)  # Ошибка: AttributeError
    

Часто задаваемые вопросы

  1. Можно ли использовать setattr для создания новых атрибутов? Да, если это разрешено классом объекта.
  2. Что произойдёт, если атрибут уже существует? Его значение будет перезаписано.