Вопрос о Автоматически устанавливаемых параметрах метода - PullRequest
0 голосов
/ 07 октября 2018

Есть словарь и методы.

ALL_DIC = {"A":"a", "B":"b", "C":"c", "D":"d", "E":"e"}

def something(A=None, B=None, D=None):
    print(A,B,D)

something(**ALL_DIC)

Произошла следующая ошибка:

Traceback (most recent call last):
  File "D:/crawl_master/nolja.py", line 186, in <module>
    something(**ALL_DIC)
TypeError: something() got an unexpected keyword argument 'C'

Итак, я использовал следующее, но мне это не нравится.Я хотел бы знать, есть ли лучший способ или библиотека.

import inspect
args, _, _, values = inspect.getargspec(something)
for key in list(ALL_DIC.keys()):
    if key not in args:
        del ALL_DIC[key]

something(**ALL_DIC)

Мне нужен совет.Спасибо за прочтение.

1 Ответ

0 голосов
/ 08 октября 2018

Гораздо более простой способ сделать это - заставить something принимать переменные аргументы ключевых слов:

def something(A=None, B=None, D=None, **kwargs):
    print(A,B,D)

, так что любые дополнительные аргументы ключевых слов, переданные something, будут приняты (и проигнорированы, если выне используйте kwargs).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...