Трудность создания уникальных массивов для каждого родительского объекта - PullRequest
0 голосов
/ 03 марта 2020

Я создаю генетический c симулятор для игры, и когда я вызываю свою функцию для заполнения массива, который определяет ген родителей, он выдает одинаковые выходные данные для каждого родителя.

Выходные данные обычно выглядят нравится. ruby = [G, U, B, N, N, G] jaune = [G, U, B, N, N, G]

Вывод, который я хочу получить, будет примерно таким. ruby = [R, A, N, R, N, B] Яун = [W, N, W, N, NA]

import random
import time

class Parent():
    magic = [None, None, None, None, None, None]


    types = ['B', 'U', 'W', 'R', 'G', 'N', 'A']
    def gen(self):
        for i in range(0, 6):
            self.magic[i] = self.types[random.randint(0, 6)]


    def traits(self):
        print (self.magic)



jaune = Parent()
ruby = Parent()

jaune.gen()
ruby.gen()

jaune.traits()
ruby.traits()

1 Ответ

3 голосов
/ 03 марта 2020

Используйте конструктор и собственные значения. Ваш magic является глобальной переменной.

import random
import time

types = ['B', 'U', 'W', 'R', 'G', 'N', 'A']

class Parent():
    def __init__(self):
        self.magic = []
        self.gen()

    def gen(self):
        for i in range(0, 6):
            self.magic.append(types[random.randint(0, 6)])

    def traits(self):
        print (self.magic)


jaune = Parent()
ruby = Parent()

jaune.traits()
ruby.traits()

Кроме того, вы можете генерировать значения внутри __init__.

Проверка

  • Установщики / Получатели
  • Локальные / глобальные переменные
  • Используйте self, когда значение соответствует определенному c классу, а не stati c метод
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...