类有一个可定义的函数__exit__,允许实现上下文管理器。
它需要所需的参数:
def __exit__(self, exc_type, exc_val, exc_tb):
但我找不到这些论点是什么及其类型的明确定义。
这是我对它们是什么以及为什么的最佳猜测,但我不完全确定:
def __exit__(self, exc_type: Exception, exc_val: TracebackException, exc_tb: TracebackType):
exc_type
Python 定义了一个TracebackException接受exc_type参数的类,该参数在 with 内的构造函数中上下文issubclass使用,SyntaxError它推断这exc_type确实是某种继承自的 。ExceptionSyntaxError
exc_val
此外,在TracebackException该类中有一个exc_value与我们相匹配的参数,exc_val它似乎具有各种属性,如__cause__、__context__和其他属性,这些属性都是在TracebackType其自身中定义的。这让我觉得参数本身就是TracebackException.
exc_tb
Python 定义了一个用作参数的walk_tb函数(从docs.python.orgexc_tb手动跟踪),并且该对象似乎具有、和可以追溯到库中的类的属性。tb_frametb_linenotb_nextTracebackTypetypeshed
想法?