он как один раз выбрал числа и знак, так закладывает их в каждый юнит. Посоветуйте, пожалуйста, как обновлять аргументы класса Unit при каждом новом вызове генератора?
import random
class Unit:
def __init__(self, left=random.randrange(1, 10),
sign = random.choice(['+', '-', '*', '/']),
right = random.randrange(1, 10)):
self.left = left
self.sign = sign
self.right = right
def show(self, spaces=True):
'''
Показывает юнит
'''
space = ''
if spaces == True: space = ' '
print(f"{self.left}{space}{self.sign}{space}{self.right}")
def prepare(self, spaces=True):
'''
Выдает строковую форму юнита для дальнейшего вложения
'''
space = ''
if spaces == True: space = ' '
return f"{self.left}{space}{self.sign}{space}{self.right}"
unit1 = Unit()
unit = Unit(right=unit1.prepare())
unit.show()
вместо того, чтобы вызывать рандомайзер для получение дефолтного значения в параметрах конструктора, вызывай его в теле самого конструктора def __init__(self): self.left = random.randrange(1, 10) и т.д.
Обсуждают сегодня