Ich sende Anforderungen an einen Server und empfange Antworten. Abhängig von der Situation variieren die Antworten und ich muss jeden von ihnen unterschiedlich behandeln.Verschiedene Serverantworten elegant behandeln
Was würde ich tun gerne etwas dieser Art haben:
if response.getChild('child1')... == x:
do_math()
return stuff1
elif response.getChild('child2')... == y
do_different_math()
return stuff2
etc...
Allerdings habe ich in das Problem bin mit, dass verschiedene Kinder existieren möglicherweise nicht, das macht mich mehrere try-except verwenden Flusskontrollen. Dies nimmt viel Platz und ist furchtbar hässlich:
try:
if response.getChild('child1')... == x:
do_math()
return message1
except:
return generic_error_message
try:
if response.getChild('child2')... == y:
do_different_math()
return stuff2
except:
return generic_error_message
etc...
Gibt es eine elegante Art und Weise verschiedene mögliche Antworten zu behandeln?
Der [ 'get'] (https://docs.python.org/2/library/stdtypes.html#dict.get) Methode aus Python-Wörterbüchern hat ein interessantes Verhalten, um einen Standardwert bereitzustellen, wenn der erwartete Wert nicht gefunden wird. Sehen Sie sich die Dokumentation der getChild-Methode an und prüfen Sie, ob es sich um ein [Mapping] (https://docs.python.org/3/glossary.html#term-mapping) Objekt handelt. Wenn ja, können Sie einen Ansatz wie 'response.getChild ('child2', None)' verwenden und mit 'None'result umgehen. –