在分配num1 = self.var1函数时fiz,Python表示未解决的参考。这是为什么?
num1 = self.var1
fiz
class Foo: def __init__(self): self.var1 = "xyz" def fiz(self, num1=self.var1): return
定义方法时, 将解析方法(和函数)的默认参数值。当这些值可变时,这会导致常见的Python陷阱:“最低惊讶”和可变默认参数
在您的情况下,self定义方法时不可用(并且如果作用域中有这样的名称,因为您实际上Foo尚未完成对类的定义,那么它将不是Foo实例!)您无法引用到 类 由定义任一内部名称; 引用Foo也会导致NameError:我可以使用class属性作为实例方法的默认值吗?)
self
Foo
NameError
相反,常用方法是None用作占位符,然后在方法主体内分配默认值:
None
def fiz(self, num1=None): if num1 is None: num1 = self.val1 ...