使用self.*作为方法的默认值
def save_file(self, outputfilename = self.image_filename):
self.file.read(outputfilename)
....
在第一行出现了 NameError: name 'self' is not defined
的错误。这看起来是因为 Python 不认识这个 'self'。我该怎么改写代码,才能不让它报错呢?
4 个回答
12
def save_file(self, outputfilename=None):
outputfilename = outputfilename or self.image_filename
self.file.read(outputfilename)
或者甚至
def save_file(self, outputfilename=None):
self.file.read(outputfilename or self.image_filename)
如果只有一个变量,这可能没什么,但如果你有,比如说,5个变量,我觉得这样会让代码更容易阅读。
14
文档中提到:
默认参数的值是在函数定义被执行时计算的。
这就解释了为什么实例不能被引用。正如其他人所说,使用 None 作为默认值,然后在函数执行时再根据实际情况来设置这个值,当实例可用时再进行调整。
51
使用默认值为 None
,然后去检查这个值。
def save_file(self, outputfilename=None):
if outputfilename is None:
outputfilename = self.image_filename
self.file.read(outputfilename)
....