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
本文探讨了在Python类方法中使用默认参数的常见错误,特别是当默认参数引用实例属性时引发的问题。通过一个具体例子,解释了为什么这样做会导致NameError,并提供了一个修正方案,即使用None作为默认值并在方法内部进行适当赋值。

584

被折叠的 条评论
为什么被折叠?



