1

eric4とそのローププラグインを使用して、コードをリファクタリングしています。*args署名がand**kwargs構文を使用するメソッドがたくさんあります。これらの署名を変更して、このパラメーターを削除したいと思います。

私は使用しようとしましたが、これはパラメータを削除しRefactoring>Refactoring>Change Method Signatureません。*args**kwargs

これがロープ自体の制限なのか、それともこの機能をサポートしていないのはericのプラグインなのかと思います。

4

1 に答える 1

5

なぜ と を削除*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ある)、正しい関数引数を決定することが難しくなります。

本当に必要がない限り、*argsand**kwargsと and はそのままにして、他のリファクタリング作業に集中します。

于 2012-09-01T13:17:39.980 に答える