Прочитав этот ответ, я понимаю, что переменные вне __init__
являются общими для всех экземпляров класса, а переменные внутри __init__
уникальны для каждого экземпляра.
Я хотел бы использовать переменные, которые являются общими для всех экземпляров, чтобы случайным образом дать моему экземпляру класса уникальный параметр. Это более короткая версия того, что я пробовал;
from random import choice
class Chromosome(object):
variable1 = [x for x in range(1,51)]
variable2 = [x for x in range(51,101)]
def __init__(self):
self.var1 = choice(variable1)
self.var2 = choice(variable2)
Моя проблема в том, что я не могу получить доступ к переменным экземпляра при инициализации нового экземпляра, в сообщении об ошибке написано name "variable1" is not defined
, есть ли способ обойти это?
РЕДАКТИРОВАТЬ: причина, по которой я хочу создать списки за пределами __init__
, состоит в том, чтобы сохранить память, если я создаю 10.000 хромосом с примерно 10-15 переменными в каждой, тогда лучше, если я просто создаю списки один раз, а не создавая их для каждой хромосомы.
РЕДАКТИРОВАТЬ2: Если кто-то хочет использовать его, мое окончательное решение включало использование random.randrange(a,b+1,2)
. При этом выбирается случайное число (только четные числа) в диапазоне [a, b], включая границы.