为什么会有这样的结构
class A: def __init__(self, a): self.a = a def p(self, b=self.a): print b
给出错误NameError: name 'self' is not defined?
NameError: name 'self' is not defined
默认参数值在函数定义时评估,但self参数仅在函数调用时可用。因此,参数列表中的参数不能相互引用。
self
在代码中默认参数None并为其添加测试是一种常见的模式:
None
def p(self, b=None): if b is None: b = self.a print b
2022 年更新: Python 开发人员现在正在考虑为未来的 Python 版本设置后期绑定参数默认值。