Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何动态命名实例或更改类中所有实例的属性?_Python_Python 3.x - Fatal编程技术网

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

Python 如何动态命名实例或更改类中所有实例的属性?,python,python-3.x,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(na

我试图使用单个代理来模拟人口增长,但在模型的基本框架方面已经遇到了麻烦

我有一个班级来容纳个人

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()
只是老化并检查已创建的个人的最后一个实例

print(Individual.list)
显示我的最终人口=开始人口+总年龄/18和
print(str(person))
似乎也证实了这一点

我想这是因为我的
birth()
函数基本上将每个新实例命名为“person”,所以每当我使用
person时,它都会引用最新创建的实例。在我看来,有两种可能性

A) 动态地为每个新实例指定一个唯一的名称,并使用一个列表来引用增长循环中这些实例的每个属性

B) 添加年龄实例属性,并了解如何更改该类所有成员的年龄实例属性


我不知道这两种方法是否可行,也不知道如何做到。我将感谢任何建议和例子

是的,每当你实例化许多你需要单独处理的事情时,使用一个列表!另外,
else:pass
是胡说八道,它什么都不做,你也可以完全忽略它。你只有一个全局
人<代码>人员
不是一个列表,而是一个参考。为什么不使用
人员
列表并将其附加到列表中呢?您需要将对象保存在容器中,就像
列表
一样。不要动态地创建一堆变量。