我需要用一个随机生成的数字初始化一个类的实例。然后我需要在几个不同的试验中使用这个实例。但是,我在制作这个实例的精确副本时遇到了麻烦-随机生成的数字将不会保持不变。每个副本都生成一个新的随机数。在
temp = proc(random.randint(min, max))
tempCpy = copy.copy(temp) #changes on temp interfere with tempCpy
tempCpy = copy.deepcopy(temp) #doesn't start with same random number
也许,你可以从你的对象中分离出随机数?在
你需要初始化随机.seed()带一个您将重复使用的参数。它将保证你生成“相同的随机数”。(例如。随机.seed(0)在其他代码之前)
你有这样的课程,我想:
当你初始化你的第一个实例时,你写下:
^{pr2}$这将随机数存储在
temp.value
。在要制作副本,只需将
temp.value
传递给proc
构造函数:您也可以编写类来自动执行此操作,这样当您将},它们的构造函数可以用来制作它们的副本)。这样做的好处是保留了类中复制需要做什么的所有知识,而不是调用方需要知道数据存储在哪里。在
proc
的实例传递给proc
构造函数时,它会生成一个副本(与其他类型一样,例如list
和{现在,你可以写下:
或者,您可以向
proc
添加一个方法来制作副本:现在你的副本是:
最后,如果您将
copy
方法命名为__copy__
(或同时使用这两个名称),它将神奇地与copy.copy
一起工作!相关问题 更多 >
编程相关推荐