ich einen Benutzer möchte eine Reihe von Strings definiertErstellen von verschiedenen Instanzen in einer Schleife ein Wörterbuch mit
user_input = ('cat', 'cactus', 'cat')
, die zu einer Reihe von Objekten entsprechen aus einem Wörterbuch der möglichen Objekte instanziiert werden
classes = {
'cat': Cat,
'cactus': Cactus,
}
Wo die Cat
und Cactus
entsprechen Klassen, die von einer übergeordneten Klasse absteigen
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)
...
Ich versuche Objekttyp auf eine Liste
pet_types = []
for i in range(0,3):
try:
pet_type.append(classes[user_input[i]])
except:
raise Exception('type no exist')
Aber hinzufügen, wenn ich dies die Ausnahme tun angehoben sagen mir „kein exist geben“, wenn die Zeichenfolge an den Wörterbucheintrag entspricht genau! Warum passiert dies?
Ich mag dann pet_types
wie diese jede Ausnahme Beschäftigte
pet_500 = pet_types[500](name,colour)
Beginnen Sie, indem Sie keine Decke verwenden "versuchen ... außer". Wie wird die * tatsächliche Ausnahme * ausgelöst? –
Randnotiz: Schleife nicht über 'range()', wenn du nur 'user_input' direkt loopen kannst. –
Ich denke du suchst ein Fabrikmuster. https://en.wikipedia.org/wiki/Factory_method_pattern –