我正在做一些编码作业,需要使用带有两个函数的类,第一个函数生成随机数,第二个函数设置值。我知道结果应该是使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总是不同的。如何使它们相同?进行了几天的努力,但仍无济于事,非常感谢您的帮助。
答案 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