我需要在__init__()
中分配一个默认的随机值。例如:
import math
import random
class Test:
def __init__(self, r = random.randrange(0, math.pow(2,128)-1)):
self.r = r
print self.r
如果我创建10个Test实例,它们都将获得完全相同的随机值。我不明白为什么会这样。我知道我可以在
__init__()
中分配随机值,但我很好奇为什么会这样。我的第一个猜测是种子是当前时间,并且对象创建的距离太近,因此获得相同的随机值。我创建对象的间隔为1秒,但结果仍然相同。 最佳答案
默认参数的值是在创建函数时设置的,而不是在调用函数时设置的-这就是为什么每次都相同的原因。
解决此问题的典型方法是将默认参数设置为None
并使用if
语句对其进行测试。
import math
import random
class Test:
def __init__(self, r = None):
if r is None:
r = random.randrange(0, math.pow(2,128)-1)
self.r = r
print self.r
关于python - 在python程序中为参数分配随机值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6462784/