Установка полей по имени в классе с __slots__

У меня есть класс Python, который определяется с помощью __slots__, вот так:

class TheClass:
   __slots__=['foo','bar']

Я хотел бы установить значения по имени, например, так

the_object=TheClass()
for x in ['foo','bar']: 
  the_object[x]=x+x

это возможно?

1 ответ

Решение

Нет разницы с общим случаем, вы можете использовать getattr а также setattr:

the_object=TheClass()
for attname in ['foo','bar']: 
    setattr(the_object, attname, attname+attname)

Ты получишь:

>>> the_object.foo
'foofoo'
Другие вопросы по тегам