2016-07-26 16 views
0

Ich habe eine Klasse, die eine aus einer Anzahl von Hilfsklassen benötigt. Es wird immer nur einen dieser Helfer benutzen, und alle haben die gleiche Schnittstelle. Also schreibe ich Code wie folgt:Gibt es eine bessere Möglichkeit, diese Funktionsaufrufe zu strukturieren?

if self.type == Class.Type.a: 
    helper = A() 
elif self.type == Class.Type.b: 
    helper = B() 
elif self.type == Class.Type.c: 
    helper = C() 

helper.do_stuff() 

Derzeit gibt es etwa 5 verschiedene Arten, aber ich kann sehen, dass erweitern, und diese Struktur ist bereits in meiner Klasse über vier oder fünf Mal, und ich kann das sehen brauchen diese Logik mindestens ein Dutzend Mal.

Gibt es eine bessere Möglichkeit, diese Logik auszuführen? Ich denke, dass Python oft Wörterbücher verwendet, um diese Art von Logik auszuführen, aber ich sehe noch nicht, wie dieses Idiom funktionieren kann.

Antwort

1

Sie in der Tat ein Wörterbuch verwenden können:

my_dict = {Class.Type.a:A, 
      Class.Type.b:B, 
      Class.Type.c:C} 

helper = my_dict[self.type]() 
helper.do_stuff() 
Verwandte Themen