У меня есть класс с несколькими переменными, и я хотел бы случайно выбрать одну из ее переменных и изменить ее.Чтобы выбрать мою переменную, я использую тот факт, что каждый экземпляр класса имеет dictionary
и пакет random
;
import random as rnd
import chromosome as Chromosome
instance1 = Chromosome() #creates class instance
random_key = rnd.choice([instance1.__dict__]) #picks out random key
instance1.random_key = 5 #change the value of the random key
Последняя строка, очевидно, не работает, но мне интересно, есть лилюбой способ получить эту функциональность?Я попытался использовать функцию форматирования, но это не сработало.
Другим решением может быть выбор случайного числа от 0 до длины моего словаря.Я мог бы вручную выписать каждое изменение переменной, которое я хочу сделать, но изменить только одно из них в зависимости от того, что является случайным числом, это может выглядеть примерно так:
import random as rnd
import chromosome as Chromosome
instance1 = Chromosome() #creates class instance
which_var_to_change = rnd.randint(1,len(instance1.__dict__)) #the for loop below works as if the length is 2
counter = 1
for key, value in instance1.__dict__.items():
if key == 'first_variable' and counter > which_var_to_change:
instance1.first_variable = 5 #change the value of the random key
if key == 'second_variable' and counter > which_var_to_change:
instance1.second_variable = 5 #change the value of the random key
counter += 1
Проблема с этим решениемчто если у меня будет слишком много переменных, это станет безумно грязным.