Le problème est de prendre en compte les arguments avant de choisir le répondeur. Voici ma tentative jusqu'à présent.Nécessité de router les appels d'instance dans une classe python
from responders import A, B, C
class RandomResponder(object)
def init(self, *args, *kwargs):
self.args = args
self.kwargs = kwargs
def __getattr__(self, name):
# pick a responder based on the args the function was called with
# I don't know how to do this part
# for sake of argument lets the args a function was called with lead me to pick responder A
r = A
responder = r(*self.args, **self.kwargs)
return responder.__getattr__(name)
L'effet recherché serait:
r = RandomResponder()
r.doSomething(1)
#returns A.doSomething()
r.doSomething(2)
#returns B.doSomething()
r.doSomething(3)
#return C.doSomething()
r.doSomethingElse(1)
#returns A.doSomethingElse()
r.doSomethingElse(2)
#returns B.doSomethingElse()
r.doSomethingElse(3)
#returns C.doSomethingElse()
Je ne saura pas à l'avance toutes les fonctions contenues avec les intervenants A, B et C.
Ce que vous essayez de faire n'est pas du tout clair, pouvez-vous donner plus d'informations? (Je voudrais également clarifier le titre) –
S'il vous plaît mettre à jour votre question avec des faits supplémentaires; commenter une réponse n'est pas aussi utile que de régler votre question. –