Использование setattr
:
Вы можете использовать setattr
для установки нового атрибута:
>>> class Test():
... def __init__(self, abc):
... self.a = 0
... self.abc = abc
... def newSelf(self):
... for i in range(2):
... b = random.choice(abc)
... c = random.choice(abc)
... setattr(self, b+c, 0)
... print(b+c,0)
И атрибут снова будет доступен:
>>> example = Test(abc)
>>> example.newSelf()
zM 0
Ja 0
>>> example.zM
0
>>> example.Ja
0
Использование exec
:
Вы можете использовать функцию exec
для выполнения инструкции python, хранящейся в строке. Так как вы генерируете имя переменной случайным образом, вы можете создать весь оператор python в строке и выполнить этот оператор, используя exec
, как показано ниже:
>>> class Test():
... def __init__(self, abc):
... self.a = 0
... self.abc = abc
... def newSelf(self):
... for i in range(2):
... b = random.choice(abc)
... c = random.choice(abc)
... exec('self.'+b+c+' = 0')
... print(b+c,0)
Здесь я создал новый атрибут, используя exec('self.'+b+c+' = 0')
. Теперь после вызова этого метода будет доступен атрибут:
>>> example = Test(abc)
>>> example.newSelf()
Tw 0
Xt 0
>>> example.Tw
0
>>> example.Xt
0