2017-02-18 8 views
0

私はオブジェクトのメソッドを定義していた場合:メソッド定義内で自己を2回動作させないのはなぜですか?

なぜこのん:

def forecasts(self, rules = self.rules): 
    return rules 

self定義されていないエラーを与えるが:

def forecasts(self, rules=None):                                                   
    if rules is None:                                                              
    rules = self.rules 
return rules 

仕事?

+0

http://stackoverflow.com/questions/13195989/default-values-for-function-parameters-in-pythonとhttp://stackoverflow.com/questions/7371244/using-self-as-の複製もあります。メソッドのデフォルト値とhttp://stackoverflow.com/questions/8131942/python-how-to-pass-default-argument-to-instance-method-with-an-instance-variab – trincot

答えて

0

関数が実際に定義されたときに評価される必要がある既定の引数を定義しています。

Pythonがその関数を評価しようとすると、selfという名前をロードしようとしていますが、そこに属性をルックアップします。 rulesの既定値として設定します。

selfをポジションとして使用するだけで、実際には式self.rulesを評価していて、定義する必要があるのは、selfです。

関連する問題