Verwenden Sie String Variable ** Kwargs als benanntes Argument

Ich versuche, einen Weg zu finden, um eine Json-Konfigurationsdatei zu durchlaufen und einen Schlüsselnamen als Argumentnamen zu einer Methode zu verwenden, die ** Kwargs verwendet. Ich habe eine Json-Konfigurationsdatei erstellt und Schlüsselnamen als Methoden verwendet. Ich gebe einfach "set_" an den Schlüsselnamen, um die richtige Methode aufzurufen. Ich konvertiere die Json in ein Wörterbuch, um eine der Standardwerte zu durchlaufen. Ich möchte Argumentnamen zu ** kwargs durch eine Stringvariable übergeben. Ich habe versucht, ein Wörterbuch zu übergeben, aber es scheint nicht so zu sein.

user_defaults = config['default_users'][user] for option_name, option_value in user_defaults.iteritems(): method = "set_" + option_name callable_method = getattr(self, method) callable_method(user = user, option_name = user_defaults[option_name]) 

Das Aufrufen der callable_method oben übergibt "option_name" als den tatsächlichen Namen des kwargs. Ich möchte es so weitergeben, dass wenn "shell" = option_name, dass es als String-Name für den Argumentnamen übergeben wird. Ein Beispiel ist unten. Auf diese Weise kann ich durch irgendwelche Schlüssel in der config und keine Sorgen darüber, was ich suche in einer Methode, die ich schreibe, um etwas zu erreichen.

 def set_shell(self, **kwargs): user = kwargs['user'] shell = kwargs['shell'] ## Do things now with stuff 

Jede Hilfe wird geschätzt, ich bin neu in Python und immer noch lernen, wie man Dinge tun, die pythonischen Weg.

One Solution collect form web for “Verwenden Sie String Variable ** Kwargs als benanntes Argument”

Wenn ich richtig verstehe, was du fragst, kannst du einfach die ** Syntax auf der anrufenden Seite benutzen, um ein Dict zu übergeben, das in kwargs umgewandelt wird.

 callable_method(user=user, **{option_name: user_defaults[option_name]}) 
  • Wie kann ich verhindern, dass sqlalchemy die Spaltennamen eines CTE präfixiert?
  • Python Mechanisieren Login Facebook, verwenden beautifulshoup ​​bekommen Profilbild fehlgeschlagen
  • Abfrage von sqlalchemy gibt AttributError zurück: 'NoneType' Objekt
  • Python: Anzahl wiederholter Elemente in der Liste
  • Ftplib: socket.error während / nach LIST // ssl._sslobj.shutdown () / Verbindungszeitüberschreitung
  • Liste zum verschachtelten Wörterbuch in python
  • Python PIL Bildmodul ImportError: Kein Modul namens PIL, Kein Modul namens Image
  • Große Listengenerierung
  • Google App-Engine python schriftlich csv in arabisch
  • Stoppen der Listenauswahl?
  • Schleife innerhalb einer Klasse negiert den Code vor ihm
  • Python ist die beste Programmiersprache der Welt.