Je voudrais un utilisateur défini une série de chaînesCréation d'instances différentes dans une boucle en utilisant un dictionnaire
user_input = ('cat', 'cactus', 'cat')
qui correspondent à une série d'objets à instancier à partir d'un dictionnaire d'objets possibles
classes = {
'cat': Cat,
'cactus': Cactus,
}
Lorsque le correspondent Cat
et Cactus
à des classes qui descendent d'une classe parente
class Pet():
...
class Cat(Pet):
def __init__(self, name, colour):
Pet.__init__(self, name, colour)
...
class Cactus(Pet):
def __init__(self, name, colour):
Pet.__init__(self, name, colour)
...
J'essaie d'ajouter le type d'objet à une liste
pet_types = []
for i in range(0,3):
try:
pet_type.append(classes[user_input[i]])
except:
raise Exception('type no exist')
Mais quand je fais l'exception est soulevée en me disant « type pas exist » lorsque la chaîne correspond exactement à l'entrée du dictionnaire! Pourquoi cela arrive-t-il?
Je veux alors utiliser pet_types
comme celui-ci
pet_500 = pet_types[500](name,colour)
Commencez par ne pas utiliser de couverture 'try ... except'. Quelle est l'exception réelle * soulevée? –
Note de côté: ne pas boucler 'range()' quand vous pourriez juste boucler directement 'user_input' directement. –
Je pense que vous cherchez un modèle d'usine. https://en.wikipedia.org/wiki/Factory_method_pattern –