如果我在对象上定义方法:
为什么这样:
def forecasts(self, rules = self.rules):
return rules
给出self
未定义的错误,但是:
def forecasts(self, rules=None):
if rules is None:
rules = self.rules
return rules
工作?
答案 0 :(得分:0)
您正在定义一个默认参数,需要在实际定义函数时进行评估。
当Python尝试评估该函数时,它将尝试加载名为self
的名称,在其上查找属性。然后将其设置为rules
的默认值。
您没有像仅使用self
作为位置时那样为参数指定名称,实际上您正在评估需要self.rules
的表达式self
待定义。