Подтвердить что ты не робот

Использование self. * В качестве значения по умолчанию для метода

def save_file(self, outputfilename = self.image_filename): 
    self.file.read(outputfilename)
    ....

дает NameError: name 'self' is not defined в первой строке. Кажется, что Python этого не принимает. Как я могу переписать код, чтобы он не вызывал исключение?

4b9b3361

Ответ 1

Используйте значение по умолчанию None и определите это.

def save_file(self, outputfilename=None): 
    if outputfilename is None:
        outputfilename = self.image_filename
    self.file.read(outputfilename)
    ....

Ответ 2

В документации указано:

Значения параметров по умолчанию оцениваются при выполнении определения функции.

Это объясняет, почему нельзя ссылаться на экземпляр. Как говорили другие, используйте None в качестве вашего по умолчанию и исправьте значение во время выполнения функции, когда экземпляр доступен.

Ответ 3

def save_file(self, outputfilename = None):
    if not outputfilename:
        outputfilename = self.image_filename 
    self.file.read(outputfilename)
    ....

Ответ 4

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, это упрощает чтение кода, на мой взгляд.