如何动态命名实例或更改类中所有实例的属性?

时间:2017-06-20 07:15:53

标签: python python-3.x

我正在尝试使用单个代理来模拟人口增长,但是已经遇到了模型基本骨架的问题。

我有一个班级来容纳个人

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)添加年龄实例属性,并找出如何为班级的所有成员更改此属性。

我不知道是否有可能,或者如何做。我很感激任何建议和例子!

0 个答案:

没有答案