在函数
fiz
中赋值 num1 = self.var1
时,Python 报告未解决的引用错误。为什么会这样呢?class Foo:
def __init__(self):
self.var1 = "xyz"
def fiz(self, num1=self.var1):
return
self
,因为它们不在“同一作用域”中。实际上,这些值在方法运行之前就已经解析了。这也是为什么def f(my_list=[])
每次调用时不会创建一个新列表的原因之一... 一种处理方法是使用def fiz(self, num1=None): if num1 is None: num1 = self.var1..
如果在“未指定”和“为None”之间有区别,则可以使用kwargs。 - user2864740self
不在作用域内 - 在完成类的定义之前,您不能拥有实例!只需使用None
作为默认值,然后在方法内设置num1 = self.var1 if num1 is None else num1
。 - jonrsharpe