5

と呼ぶ単純な関数がありますmyFunction。2 つのパラメーターを取り、それらに対していくつかの計算を実行し、結果を返します。

MyClassまた、次のようなヘッダーを持つコンストラクターを持つクラスもあります。

__init__(self, bar, fun=myFunction):

このクラスで何かを実行しようとすると、次のエラーが発生します。

MyClass
    def __init__(self, bar, fun=myFunction):
NameError: name 'myFunction' is not defined

このクラスを削除すると、Python シェルで myFun を使用できるようになります。

4

2 に答える 2

13

あなたは実際のコードを示していないので、確信が持てませんが、 のmyFunction後に定義されているに違いありませんMyClass。デフォルト値の式は__init__メソッドの定義時に評価されるためmyFunction、その時点で定義する必要があります。後で定義するのは遅すぎます。

于 2012-06-22T23:45:05.533 に答える
-6

myFunction は値ではなく変数であるため、デフォルトのパラメーターとして使用することはできません。

宣言された関数の名前の代わりに、デフォルトのパラメーターとしてラムダ関数を使用できるかもしれません。

于 2012-06-22T23:33:43.400 に答える