Python декоратор для генератора случайных чисел? - PullRequest
0 голосов
/ 08 ноября 2019

Я делаю некоторую домашнюю работу по кодированию, и мне нужно использовать класс с двумя функциями: первая функция, чтобы сгенерировать случайное число, и вторая функция, чтобы установить значение. Я понимаю, что результат должен быть таким, чтобы вывод геттера был равен выводу установщика, но они не совпадают, так как я думаю, что установщик активирует геттер во второй раз перед печатью результата. Я думаю, что мне нужно использовать декораторы, чтобы решить эту проблему, вот как я подошел к ней.

class RandNum(object):

random.seed(0)

def __init__(self):

    self.num = self.getNum


@property
def getNum(self):

    return random.randint(0,20)

@getNum.setter
def setNum(self,num):

     self.num = num

После печати

randnum = RandNum()
for i in range(3):
    print("getter: ", randnum.getNum)
    print("setter: ", randnum.setNum)

я получаю

getter:  13
setter:  1
getter:  8
setter:  16
getter:  15
setter:  12

Так что мой геттер и сеттер всегда разные. Как я могу сделать их одинаковыми? Я работал над этим несколько дней, но безрезультатно, поэтому буду очень признателен за помощь.

1 Ответ

0 голосов
/ 09 ноября 2019

Хорошо, ответили.

Оказывается, мне просто нужно было сгенерировать случайное число один раз, и я генерировал его несколько раз через функцию получения. Итак, правильный код:

class RandNum(object):

random.seed(0)

def __init__(self):        

    self.num = random.randint(0,20)

@property
def getNum(self):

   return self.num


@getNum.setter
def setNum(self,num):

    self.num = num
...