Как добавить новую переменную с кастомным именем в объект?

Пока еще не понадобилось, но очень интересно... Допустим я хочу добавить в
class Test:
   def __init__(self):
      self.sma=None
t=Test()

новые переменные допустим утрированно похожим методом
for i in range(0,3):
    exec('t.sma_'+str(i)+'=None')

и в итоге хочу получить
print(t.sma_0) // None
print(t.sma_1) // None
print(t.sma_2) // None
print(t.sma_3) // None

Как подобное делается правильно? И как часто такое вообще используется?
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@galaxy
Вас смущает что именно?
Новые атрибуты в объект добавлять можно, очевидным образом:
t.sma_1 = 17

Если название атрибута неконстантно - setattr():
setattr(t, "sma_" + str(2), 17)
# можно и так
t.__setattr__("sma_" + str(2), 17)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы