随机生成器的Python装饰器?

时间:2019-11-07 23:08:50

标签: random python-decorators

我正在做一些编码作业,需要使用带有两个函数的类,第一个函数生成随机数,第二个函数设置值。我知道结果应该是使getter输出等于setter输出,但是它们与我认为setter第二次在打印结果之前激活getter的方式不同。我认为我需要使用装饰器来解决此问题,这就是我的处理方法。

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

所以我的getter和setter总是不同的。如何使它们相同?进行了几天的努力,但仍无济于事,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,回答了。

事实证明,我只需要生成一次随机数,而我通过getter函数多次生成了随机数。因此正确的代码是。

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