问题:NameError:名称“ self”未定义
为什么这样的结构
class A:
    def __init__(self, a):
        self.a = a
    def p(self, b=self.a):
        print b
给一个错误NameError: name 'self' is not defined?
回答 0
默认参数值在函数定义时评估,但self仅在函数调用时可用。因此,参数列表中的参数不能相互引用。
将参数默认为默认值None并在代码中为此添加测试是一种常见的模式:
def p(self, b=None):
    if b is None:
        b = self.a
    print b
回答 1
对于您还希望将“ b”设置为“无”的情况:
def p(self, **kwargs):
    b = kwargs.get('b', self.a)
    print b
回答 2
如果您通过Google到达这里,请确保检查是否已将self作为类函数的第一个参数。特别是如果您尝试在函数中引用该对象的值。
def foo():
    print(self.bar)
> NameError:名称“ self”未定义
def foo(self):
    print(self.bar)
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

