Внутри __init__ используйте переменную извне __init__

W3Schools

Из их примера:


1
задан armara 20 January 2019 в 00:40
поделиться

3 ответа

Вы также можете просто использовать 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)
0
ответ дан ai_learning 20 January 2019 в 00:40
поделиться

Вам просто нужно использовать имя класса при обращении к нему. говоря 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(), не так ли?

0
ответ дан N Chauhan 20 January 2019 в 00:40
поделиться

Вот еще один способ: (все приведенные выше ответы верны)

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)])
0
ответ дан shahriar 20 January 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: