Return value of __exit__

Viewed 9629

I understand that

  • __enter__ and __exit__ are used to implement a context manager.

  • if an exception occurs in a with statement, the exception's type, value and traceback are passed to the __exit__ method.

  • __exit__ can handle the exception:

    1. Returning True: the exception is gracefully handled.
    2. Returning anything else: the with statement raises the exception

I came across the following __exit__ method. Is the return statement redundant?

def __exit__(self, type, value, traceback):
    self.close()
    return type == None

since it seems to me that,

  • If no exception occurred, type will naturally be None, so __exit__ returns true. Nothing is raised.
  • If an exception did occur, type is set to the actual exception type, so __exit__ returns false. The exception is raised as is.
1 Answers
Related