def save_file(self, outputfilename = self.image_filename):
self.file.read(outputfilename)
....
gives NameError: name 'self' is not defined
in the first line. It seems that Python doesn't accept it. How can I rewrite the code so it doesn't raise an exception?
Use a default of None
and detect that.
def save_file(self, outputfilename=None):
if outputfilename is None:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
The documentation states:
Default parameter values are evaluated when the function definition is executed.
This explains why the instance cannot be referenced. As others have said, use None as your default and fix up the value at function execution time when the instance is available.
def save_file(self, outputfilename=None):
outputfilename = outputfilename or self.image_filename
self.file.read(outputfilename)
or even
def save_file(self, outputfilename=None):
self.file.read(outputfilename or self.image_filename)
This may be nothing with one variable, but if you have, let's say, 5, this makes code easier to read, in my opinion.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With