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.