2017-07-14 1 views
-1

Je suis nouveau sur ce site et nouveau pour le codage alors s'il vous plaît pardonnez-moi. J'ai pratiqué le codage et je me demandais si quelqu'un pouvait vous aider.Comment créer des instances de classe à partir d'une liste?

Disons que j'ai un class exampleClass.

Au lieu de faire:

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

Puis-je préciser que:

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

puis créer les instances de classe?

J'ai cherché et essayé plusieurs exemples de code mais je n'ai pas pu le faire.

+0

double potentiel: https: // stackoverflow.com/questions/18754180/create-multiple-instances-of-a-class#18755477 ou https://stackoverflow.com/questions/405282/many-instances-of-a-class –

+0

Copie possible de [Plusieurs instances d'une classe] (https://stackoverflow.com/questions/405282/many-instances-of-a-class) –

Répondre

0

Vous pouvez utiliser une compréhension dictionnaire carte des instances de classe à des valeurs spécifiques:

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


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

Bien que possible, vous voulez généralement éviter de créer dynamiquement des noms de variables, et utiliser un conteneur à la place comme une liste - si vous besoin d'accéder à vos valeurs par index - ou dictionnaire - si vous avez besoin d'accéder à vos valeurs par un nom spécifique.

1

Il n'y a pas moyen de créer des variables par leur nom. Une autre option pourrait être de créer une liste avec un certain nombre de cas de exampleClass en utilisant une compréhension de la liste:

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

qui peuvent ensuite être décompressé en variables:

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

Ah, j'ai oublié le déballage itérable. C'est probablement le meilleur moyen d'y aller. +1 –

+0

Comment puis-je mettre à l'échelle, disons, 20 variables? – Icee

+0

@Icee: Bump '3' à' 20' et décompresser vers plus de variables. Avoir 20 variables du même type est un signe que vous pourriez vouloir utiliser une autre approche à la place, cependant. Peut-être une liste? – Ryan