2017-07-14 124 views
-1

我是这个网站的新手,所以请耐心等待。如何从列表创建类实例?

我一直在练习编码,并想知道是否有人可以提供帮助。

假设我有一个class exampleClass

而不是做的:

x = exampleClass() 
y = exampleClass() 
z = exampleClass() 

我可以只注明:

list = ['x','y','z'] 

然后创建类的实例?

我已经搜索并尝试了几个代码示例,但无法做到这一点。

+0

可能重复:https://开头stackoverflow.com/questions/18754180/create-multiple-instances-of-a-class#18755477或者https://stackoverflow.com/questions/405282/many-instances-of-a-class –

+0

可能的重复[Many instances (类)](https://stackoverflow.com/questions/405282/many-instances-of-a-class) –

回答

0

您可以使用字典修真类的实例映射到特定的值:

>>> class Example: 
    def __repr__(self): 
     return 'ExampleObject' 


>>> {k: Example() for k in ('x', 'y', 'z')} 
{'z': ExampleObject, 'y': ExampleObject, 'x': ExampleObject} 

虽然有可能,你一般要避免动态创建变量名,并使用一个容器,而不是如清单 - 如果你如果您需要通过特定名称访问您的值,则需要通过索引或字典访问您的值。

1

没有简单的方法来按名称创建变量。一个替代选择可能是创建一个列表,使用列表理解的exampleClass实例的给定数量:

[exampleClass() for _ in range(3)] 

,然后可以解压到变量:

x, y, z = [exampleClass() for _ in range(3)] 
+0

啊,我忘了iterable拆包。这可能是更好的方法。 +1 –

+0

如何针对20个变量对此进行缩放? – Icee

+0

@Icee:将'3'撞到'20'并解压缩到更多变量。尽管有20个相同类型的变量是一个标志,您可能想要使用其他方法。也许是一个列表? – Ryan