Это работает, но только в Python 3. См. PEP 3102 . Судя по документам «что нового», кажется, что нет 2.x бэкпорта, так что вам не повезло. Вы должны будете принять любые ключевые аргументы (**kwargs
) и проанализировать их вручную. Вы можете использовать d.get(k, default)
, чтобы получить d[k]
или default
, если его там нет. Чтобы удалить аргумент из kwargs
, например, перед вызовом метода суперкласса используйте d.pop
.
Обратите внимание, что в def get(self, *args, raw=False, vars=None):
raw=False
и vars=None
не имеют ничего общего с аргументами ключевых слов. Это значения аргументов по умолчанию. Аргументы со значением по умолчанию могут передаваться позиционно, а аргументы без значения по умолчанию могут передаваться по ключевому слову:
def f(a=1): pass
f(2) # works, passing a positionally
def f(a): pass
f(a=2) # works, passing a by keyword
Аналогично, аргументы только для ключевых слов не обязательно должны иметь значение по умолчанию. За аргументом *args
следует указывать только ключевые слова, а не значение по умолчанию:
def f(*args, a): pass
# a is a mandatory, keyword-only argument