Python 我应该复制一个类的实例来实现这一点吗?如果是,我该怎么做?

Python 我应该复制一个类的实例来实现这一点吗?如果是,我该怎么做?,python,class,copy,Python,Class,Copy,对不起,如果标题不是很清楚。我不确定合适的标题。让我解释一下我需要什么 我正在对一个模拟进行多次运行,每次运行对应一个不同的种子。但是,我希望类实例的开始特征在不同的运行中保持不变。例如,考虑一个城市里的人。在下面的代码中,命令city=people()创建个人对象,每个人都有从分布中随机选择的一些财富。设F(.)为人口中已实现的初始财富分配。当进行一次特定的模拟运行时,总体中的情况会发生变化,person对象的各种属性也会更新。例如,一个人的收入会发生变化。这些属性的最终值取决于模拟运行期间发

对不起,如果标题不是很清楚。我不确定合适的标题。让我解释一下我需要什么

我正在对一个模拟进行多次运行,每次运行对应一个不同的种子。但是,我希望类实例的开始特征在不同的运行中保持不变。例如,考虑一个城市里的人。在下面的代码中,命令
city=people()
创建个人对象,每个人都有从分布中随机选择的一些财富。设F(.)为人口中已实现的初始财富分配。当进行一次特定的模拟运行时,总体中的情况会发生变化,person对象的各种属性也会更新。例如,一个人的收入会发生变化。这些属性的最终值取决于模拟运行期间发生的一些随机实现。现在我想再次使用不同的随机种子运行模拟,在运行开始之前,所有属性都重置为初始值(包括随机确定的财富分布)。我应该做浅拷贝还是深拷贝?还有第三种更好的方法吗

非常感谢

city = people()

for seedValue in ListOfSeeds:

    cityThisInstance = city.copy()

    cityThisInstance.someAttribute = xxxxx
    cityThisInstance.anotherAttribute = yyyyy

    Rest of the code

据我所知,您总是希望您的初始条件(例如,在您到达环路之前,
city
的状态)相同。如果是这样的话,我更愿意在运行循环时重新初始化这个类,因为这样更清楚

initargs = 21, 50000
initkwargs = {car: 'blue', make: 'mazda'}

for loop:
    cityThisInstance = people(*initargs, **initkwargs)
如果每次初始化类时都会运行大量代码,那么最好简单地复制它的状态。最好使用Deepcopy,这样就可以复制它使用的所有变量,尤其是可变变量,而不是指向原始变量所在的位置

import copy

for loop:
    cityThisInstance = copy.deepcopy(city)

谢谢你,尼克。我无法重新初始化该类,因为初始状态包含一些使用random.uniform函数确定的变量。如果我使用您建议的第一种方法重新初始化,这些值将更改。但第二种方法应该有效。我试试看。谢谢