小编典典

NameError:名称“自我”未定义

all

为什么会有这样的结构

class A:
    def __init__(self, a):
        self.a = a

    def p(self, b=self.a):
        print b

给出错误NameError: name 'self' is not defined


阅读 98

收藏
2022-08-19

共1个答案

小编典典

默认参数值在函数定义时评估,但self参数仅在函数调用时可用。因此,参数列表中的参数不能相互引用。

在代码中默认参数None并为其添加测试是一种常见的模式:

def p(self, b=None):
    if b is None:
        b = self.a
    print b

2022 年更新: Python 开发人员现在正在考虑为未来的 Python
版本设置后期绑定参数默认值。

2022-08-19