Ответ 1
Используйте значение по умолчанию None
и определите это.
def save_file(self, outputfilename=None):
if outputfilename is None:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
def save_file(self, outputfilename = self.image_filename):
self.file.read(outputfilename)
....
дает NameError: name 'self' is not defined
в первой строке. Кажется, что Python этого не принимает. Как я могу переписать код, чтобы он не вызывал исключение?
Используйте значение по умолчанию None
и определите это.
def save_file(self, outputfilename=None):
if outputfilename is None:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
В документации указано:
Значения параметров по умолчанию оцениваются при выполнении определения функции.
Это объясняет, почему нельзя ссылаться на экземпляр. Как говорили другие, используйте None в качестве вашего по умолчанию и исправьте значение во время выполнения функции, когда экземпляр доступен.
def save_file(self, outputfilename = None):
if not outputfilename:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
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, это упрощает чтение кода, на мой взгляд.