Python 3.x 在Python中在循环内初始化实例

Python 3.x 在Python中在循环内初始化实例,python-3.x,Python 3.x,我想通过循环创建类对象,但我无法找到解决方案 class burger: def __init__(self): self.ketchup='yes' self.mayo= 'No' for i in range(5): burger_i= burger() 作为回报,我希望创建这些对象(我不想要列表): 这应该起作用: class burger: def __init__(self): self.ketchup='ye

我想通过循环创建类对象,但我无法找到解决方案

class burger:
    def __init__(self):
        self.ketchup='yes'
        self.mayo= 'No'

for i in range(5):
    burger_i= burger()
作为回报,我希望创建这些对象(我不想要列表):

这应该起作用:

class burger:
    def __init__(self):
        self.ketchup='yes'
        self.mayo= 'No'

for i in range(5):
    globals()["burger_%d" % i] = burger()

但实际上,你应该只使用一个列表

这样动态地命名变量是个糟糕的主意。您应该使用列表(如果您想要更灵活的命名,可以使用dict)。大概是这样的:

burgers = [burger() for i in range(5)]

现在您的
burgers\u i
只是
burgers[i]

使用列表或字典来保存多个对象。修改
locals()。它只在这个实例中起作用,因为
locals()是globals()
。是的,正如我所说,它应该起作用,但它不好。更改局部变量或全局变量是对OP提出的确切问题的回答-明智的做法是使用列表。我的意思是,您通常无法更改
局部变量()
(模化一个依赖于实现的异常)并以这种方式修改变量。例如,在函数中尝试它
globals()
,另一方面,你可以修改,尽管它很难看。你说得对,我以前从未真正尝试过修改本地语言。因此,我在答案中将其改为globals(这并没有让它变得更好),并更加强调使用列表的建议:)
burgers = [burger() for i in range(5)]