Удалите *args и **kwargs из сигнатур метода, используя веревку

Я использую eric4 и его плагин для реорганизации кода. У меня есть много методов, чьи подписи используют *args а также **kwargs синтаксис. Я хотел бы изменить эти подписи и удалить эти параметры.

Я пытался использовать Refactoring>Refactoring>Change Method Signature но это не убирает *args а также **kwargs параметры.

Интересно, является ли это ограничением самой веревки, или это плагин Эрика, который не поддерживает эту функцию.

1 ответ

Решение

Почему вы хотите удалить *args а также **kwargs? Чтобы выполнить рефакторинг этих функций, библиотека рефакторинга должна выполнить немало самоанализа, чтобы узнать правильные параметры.

Например, как бы вы реорганизовали следующую функцию:

def f(*args, **kwargs):
    a = args[0]
    b = args[1]
    c = kwargs.get('c', 3)
    d = kwargs.get('d', 4)
    print a, b, c, d

Вы можете превратить это в:

def f(a, b, c=3, d=4):
    print a, b, c, d

Для этого уже требуется немало анализа кода, а для реальных функций это еще сложнее. Количество позиционных и ключевых аргументов может варьироваться (например, функция может перебирать args), что затрудняет определение правильных аргументов функции.

Если бы не было реальной необходимости, я бы оставил *args а также **kwargs и сосредоточиться на других усилиях по рефакторингу.

Другие вопросы по тегам