Python 将多个变量同时初始化到同一个对象但不同的实例

Python 将多个变量同时初始化到同一个对象但不同的实例,python,initialization,Python,Initialization,以相同的方式初始化多个对象,而不使它们都指向同一个对象,最干净的方法是什么?我想这样做: a, b, c = create_object(), create_object(), create_object() 以不那么冗长的方式 我可以执行以下操作,但是我的所有变量都指向同一个对象 a = b = c = create_object() # then a.change() changes them all! 有没有一种干净的、pythonic的方法可以做到这一点,而我却缺少了这种方法?最py

以相同的方式初始化多个对象,而不使它们都指向同一个对象,最干净的方法是什么?我想这样做:

a, b, c = create_object(), create_object(), create_object()
以不那么冗长的方式

我可以执行以下操作,但是我的所有变量都指向同一个对象

a = b = c = create_object() # then a.change() changes them all!
有没有一种干净的、pythonic的方法可以做到这一点,而我却缺少了这种方法?

最pythonic的代码就是最有意义的代码。这样做好多了

a = create_object()
b = create_object()
c = create_object()
与另一种选择相反,这是一种混乱的胡言乱语。不要害怕有两条额外的线路;实际上,好处要大得多。:-)

使用工厂

def factory(num):
    for i in range(num):
        yield shell()

class shell():
    pass

a, b, c = factory(3)

# results:
>>> a
<__main__.shell instance at 0x0000000002BE0548>
>>> b
<__main__.shell instance at 0x0000000002BE03C8>
>>> c
<__main__.shell instance at 0x0000000002BE0588>

你的第一条路是最好的。。。如果变量太多,那么应该使用列表。我投票决定关闭这里。@jamylak如果没有清洁工,这是一个有用的事实,因此我无法在任何现有的问题中找到。OP的原始代码如何没有任何意义?我的意思是,如果有人试图将其整合到工厂或列表或类似的东西中。你能举个例子说明这什么时候有用吗?我还建议能够将类传递给工厂函数示例:一个游戏想要在地图上的某个地方创建10个随机生物,criter init将负责定位,但是你想要将这10个生物存储到一个特定的组中,也许还可以创建第二个组。。。有两组10个随机的小动物,可能有稍微不同的参数。在这种情况下,我只会使用列表理解,但我想这是一个风格问题。我个人也不会这样做,但我知道为什么可以使用它,在哪里,如果这是理想的方法,那么这是正确的方法。因为为10个变量编写10行代码是荒谬的。无论如何,你永远不需要对10个变量分别进行运算
def factory(obj, num, args=None):
    for i in range(num):
        yield obj(args) if args else obj()


a, b, c = factory(create_object, 3)