setattr()

Функция setattr() устанавливает значение атрибута объекта по его имени, заданному строкой. Это парная функция к getattr(): запись setattr(obj, "x", 5) равнозначна obj.x = 5, но имя атрибута может быть вычислено в рантайме.

Сигнатура

setattr(object, name, value)

Параметры:

  • object — объект, у которого устанавливается атрибут.

  • name — строка с именем атрибута.

  • value — новое значение.

Возвращает: None.

Примеры

Установка нового атрибута:

class Robot:
    pass

r = Robot()
setattr(r, "name", "Phobo")
setattr(r, "speed", 120)
print(r.name, r.speed)
Phobo 120

Изменение существующего значения:

class Sensor:
    value = 0

s = Sensor()
setattr(s, "value", 42)
print(s.value)
42

Заполнение объекта из словаря:

class Config:
    pass

data = {"host": "localhost", "port": 8080, "debug": True}
cfg = Config()
for key, val in data.items():
    setattr(cfg, key, val)

print(cfg.host, cfg.port, cfg.debug)
localhost 8080 True

Динамическая генерация атрибутов:

class Palette:
    pass

p = Palette()
for i, color in enumerate(["red", "green", "blue"]):
    setattr(p, f"color_{i}", color)

print(p.color_0, p.color_1, p.color_2)
red green blue

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.