Próbuję znaleźć sposób na przechodzenie przez plik konfiguracyjny json i użyć nazwy klucza jako nazwy argumentu metody, która używa ** kwargs. Stworzyłem plik konfiguracyjny json i użyłem nazw kluczy jako metod. Właśnie dodaję "set_" do nazwy klucza, aby wywołać prawidłową metodę. Konwertuję json do słownika, aby przechwytywał dowolne wartości domyślne. Chcę przekazać nazwy argumentów do ** kwargs za pomocą zmiennej łańcuchowej. Próbowałem przekazać słownik, ale nie wydaje mi się, że tak jest.Użyj zmiennej łańcuchowej ** kwargs jako nazwanego argumentu
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])
Wywołanie metody callable_method powyżej przekazuje "option_name" jako rzeczywistą nazwę kwarg. Chcę przekazać go tak, że gdy "shell" = option_name, zostanie przekazana jako nazwa ciągu dla nazwy argumentu. Przykład znajduje się poniżej. W ten sposób mogę przechodzić przez klawisze w konfiguracji i nie martwić się o to, czego szukam w jakiejkolwiek metodzie, którą piszę, aby coś osiągnąć.
def set_shell(self, **kwargs):
user = kwargs['user']
shell = kwargs['shell']
## Do things now with stuff
Każda pomoc jest doceniona Jestem nowym użytkownikiem Pythona i wciąż uczę się, jak robić rzeczy w sposób pytonowy.
To niesamowite, właśnie tego szukałem. Dziękuję za szybką odpowiedź. – lumberjacked