Вы также можете просто использовать self
вместо Chromosome
. Также object
не обязательно, я думаю.
from random import choice
class Chromosome():
variable1 = [x for x in range(1,51)]
variable2 = [x for x in range(51,101)]
def __init__(self):
self.var1 = choice(self.variable1)
self.var2 = choice(self.variable2)
Вам просто нужно использовать имя класса при обращении к нему. говоря variable1
Python, он найдет переменную из области видимости. Однако ваша переменная является атрибутом класса.
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(Chromosome.variable1)
self.var2 = choice(Chromosome.variable2)
Точно так же вы можете использовать self.variable1
, так как это всего лишь экземпляр класса и будет иметь доступ к атрибутам класса тоже.
Основная идея здесь заключается в том, что при доступе к любым атрибутам или методам класса вы должны предоставить объект, который имеет доступ к этим методам, будь то класс, подкласс или экземпляр того или другого. Вы бы не назвали dict.from_keys()
как from_keys()
, не так ли?
Вот еще один способ: (все приведенные выше ответы верны)
import random
class Chromosome(object):
def __init__(self):
self.var1 = random.choice([x for x in range(1, 51)])
self.var2 = random.choice([x for x in range(51, 101)])