我正在尝试使用单个代理来模拟人口增长,但在模型的基本框架方面已经遇到了问题。你知道吗
我有一个班级来容纳个人
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)添加一个age实例属性,并找出如何为类的所有成员更改该属性。你知道吗
我不知道两者是否可行,也不知道如何做到。我将感谢任何建议和例子!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐