我遇到以下代码问题:
from random import randint
class character():
__init__(self):
#init stuff here
def luck(self, Luck = randint(0, 3)):
return Luck
我必须在我的脚本中多次调用此方法,对于多个实例,每次都要获取不同的数字。我遇到的问题是每当我调用这个方法时,无论从哪个实例,我总是得到相同的结果。例如,在以下代码中:
Foo = character()
Bar = character()
for foobar in range(3):
print(Foo.luck(), Bar.luck())
我得到了我的输出:
1 1
1 1
1 1
顺便说一下,在我的代码中,我使用randint(0, 3)
作为luck()
方法的参数,因为在某些特定情况下,我想自己为其赋值。
回到这一点,我怎样才能每次获得不同的数字?
答案 0 :(得分:3)
这是运气功能的定义。如果用户指定了一个号码,它将被返回。如果没有给出参数,则将从randint
设置运气并返回该随机值。
def luck(self, Luck = None):
if Luck is None:
Luck = randint(0,3)
return Luck
答案 1 :(得分:2)
在python中,设置函数参数默认值的默认表达式只执行一次。这意味着一旦定义了fixtures :all
方法,第一次吐出的值luck
将保留所有调用。
要在每次调用方法时获取新的随机数,您需要在方法体内调用它:
randint()
这将按预期工作。
答案 2 :(得分:0)
您可以使用None
或其他内容作为默认参数,检查您是否有None
,如果有,请致电randint()
(如果不是仅仅返回您所获得的内容)。<登记/>
如果在函数减速中使用randint()
,它将仅随机化一次。