我正在尝试使用单个代理来模拟人口增长,但是已经遇到了模型基本骨架的问题。
我有一个班级来容纳个人
class Individual:
"""These are individuals"""
list = []
def __init__(self, name, sex, dob):
self.name = name
self.sex = sex
self.dob = dob
self.list.append(name)
def __str__(self):
return "name is {}, sex is {}, age is {}" .format(self.name, self.sex, curyear - self.dob)
我通过
实例化新人def birth():
global person
person = Individual((next(name)), randsex(), curyear)
基本增长循环是
for i in range(totalyears):
curyear = curyear + 1
if curyear - person.dob == 18:
birth()
else:
pass
问题似乎是那个
if curyear - person.dob == 18:
birth()
只是老化并检查已创建的Individual
的最后一个实例。
print (Individual.list)
表明我的最终人口=起始人口+总年数/ 18且print (str(person))
似乎也证实了这一点。
我认为这是因为我的birth()
函数基本上命名了每个新实例' person',所以每当我使用person.whatever
时,它都会引用最新创建的实例。在我看来,有两种可能性。
A)动态地为每个新实例提供一个唯一的名称,并使用一个列表来引用这些实例中的每一个'增长循环中的属性。
B)添加年龄实例属性,并找出如何为班级的所有成员更改此属性。
我不知道是否有可能,或者如何做。我很感激任何建议和例子!