2017-01-05 6 views
2

古い関数があるとします(oldFunction(first, second, third))。そして、すべての議論は必須です。私は 'second'引数の使用を非難し、私のプロジェクトのどこにでもコードを変更したくありません。古い関数をラップすることにより、より少ない引数で新しい関数を作成する

私は、最初と3番目の引数だけで、まったく同じことをする新しい関数を作りたいと思います。

私は新しい関数をラッパーとして古い関数でラップすることを考えていました。どうすればそれをすることができますか?したがって、私は2つの引数だけで新しい関数を使用することができますが、古い名前で呼び出されると、新しい関数は(ラップされているので)呼び出されますか?

どうすればできますか?

+0

'oldFunction'? – Chinny84

答えて

2

あなたのようにあなたがoldFunctionを再定義することができますnewFunction(x,y)を定義した後:おそらく `second`引数は出力を変更しますので、あなたがラッパー内から` oldFunction`を呼び出している場合は問題がある

def oldFunction(x,y,z): 
    return newFunction(x,z) 
+0

ありがとう!それは私が欲しかったものです:) @ john-coleman –

+0

これはどのようにコードを変更しないのですか?これは私の意見ではかなり悪いコーディングです。これは言いました、私はこれがOPの問題を解決することに同意します。 +1 – Chinny84

+1

@ Chinny84考えられるのは、 'oldFunction'を呼び出すコードの既存のセクションをそのまま残すことができるということです。明らかに*コードのいくつかは変更されていますが、1) 'newFunction'の定義が追加され、2)' oldFunction'が再定義されます。 OPは、「自分のプロジェクトのどこにでもコードを変更しない」という意味で少しはっきりしていたかもしれません。私は意図した意味を「私のプロジェクトのどこにでもコードを変更しないでください」と読みました。 –

関連する問題