我需要在__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/

10-11 10:35