J'ai un objet.
f_to_call=getattr(myobj,'f1')
3 Réponses :
La ligne f = getattr (myObj, 'f1') code> fait simplement
f code> une méthode liée. Passer les paramètres se produit comme dans n'importe quelle autre méthode.
positional = [1, 2]
keyword = {'a': 3, 'b': 4}
f(*positional, **keyword)
Une manière possible:
class myClass: @staticmethod def f1(arg1, param1, dictionary_settings={}): print(arg1, param1, dictionary_settings) @staticmethod def f2(arg1, _=None, dictionary_settings={}): print(arg1, dictionary_settings) myobj=myClass() f_to_call = myobj.f1 f_to_call(1, 2) f_to_call = myobj.f2 f_to_call(1, 2) f_to_call(1)
De cette façon, vous devez d'abord déclarer ces méthodes en tant que méthode statique alors vous ne pouvez que les appeler que vous souhaitez dans votre question p> Ensuite, vous pouvez les appeler en passant d'un premier argument positionnel, puis de mot-clé comme p>
Non liée, mais F1 et F2 sont des méthodes d'instance afin qu'elles ont besoin de prendre
auto code> comme premier argument; Et, vous ne devriez pas définir un dictionnaire comme défaut, car cela vous expose à l'argument de défaut mutable GOTCHA.
Merci! Je l'ai corrigé