2017-07-14 129 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