Удалите *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
и сосредоточиться на других усилиях по рефакторингу.