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

2024-04-23 16:00:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用单个代理来模拟人口增长,但在模型的基本框架方面已经遇到了问题。你知道吗

我有一个班级来容纳个人

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实例属性,并找出如何为类的所有成员更改该属性。你知道吗

我不知道两者是否可行,也不知道如何做到。我将感谢任何建议和例子!你知道吗


Tags: 实例nameself属性isdefindividuallist