0
votes

Passage des mots clés mixtes non-clés arguments programmatiques à une méthode liée en python

J'ai un objet.

f_to_call=getattr(myobj,'f1')


2 commentaires

Non liée, mais F1 et F2 sont des méthodes d'instance afin qu'elles ont besoin de prendre auto 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é


3 Réponses :


2
votes

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)


0 commentaires

1
votes

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)


0 commentaires

1
votes

De cette façon, vous devez d'abord déclarer ces méthodes en tant que méthode statique xxx

alors vous ne pouvez que les appeler que vous souhaitez dans votre question xxx

Ensuite, vous pouvez les appeler en passant d'un premier argument positionnel, puis de mot-clé comme xxx


0 commentaires