144 为什么这样的结构 class A: def __init__(self, a): self.a = a def p(self, b=self.a): print b 给一个错误NameError: name 'self' is not defined? python nameerror — 克里斯 source
159 默认参数值在函数定义时评估,但self仅在函数调用时可用。因此,参数列表中的参数不能相互引用。 将参数默认为默认值None并在代码中为此添加测试是一种常见的模式: def p(self, b=None): if b is None: b = self.a print b — 整体 source 4 尽管我认为上面的内容不是很漂亮(我来自ruby,在这里一切正常,但是上面的内容实际上是一种解决方法)。python选择在参数列表中使其自身不可用仍然很尴尬。 — shevy 2 @shevy:“ self”在python中没有特殊含义,它只是按惯例为第一个参数选择的名称。您也可以将“ self”替换为“ me”或“ x”。 — 最多 有没有更好的方法可以做到这一点?如果我们有一个带有一打应引用self的默认参数的函数,我们真的需要一打if语句吗?这很尴尬。 — 理查德·J·巴拉巴拉斯
6 如果您通过Google到达这里,请确保检查是否已将self作为类函数的第一个参数。特别是如果您尝试在函数中引用该对象的值。 def foo(): print(self.bar) > NameError:名称“ self”未定义 def foo(self): print(self.bar) — 埃里希 source