class A:
def __init__(self, a):
self.a = a
def p(self, b=self.a):
print b
在学习的时候,写了以上代码,报了如下的错误
NameError: name 'self' is not defined
上网搜了搜原因,赶紧记录下来:
默认参数值在函数定义时评估,但是self是仅在函数调用时可用的参数。 因此,参数列表中的参数不能相互引用。
将参数默认设置为None并在代码中为此添加测试是一种常见的模式:
def p(self, b=None):
if b is None:
b = self.a
print b