Python中的回溯对象的类型是什么?

Noa*_*oah 5 python exception traceback

import sys

try:
    raise Exception('foobar')
except:
    info = sys.exc_info()

print(type(e[2])) # <class 'traceback'>
help(traceback) # NameError: name 'traceback' is not defined
Run Code Online (Sandbox Code Playgroud)

Python用于异常报告的回溯对象的类型究竟是什么?

sys.exc_info上的文档提到了参考手册,但是虽然我发现了很多关于如何操作回溯实例的信息,但我希望能够访问类型(类)本身.

Ash*_*ary 9

tracebackobject是TracebackType类型模块下的当前实例.

types.TracebackType

在... traceback中找到的对象类型sys.exc_info()[2].

>>> from types import TracebackType    
>>> isinstance(info[2], TracebackType)
True    
>>> TracebackType
<class 'traceback'>
Run Code Online (Sandbox Code Playgroud)

正如@ user2357112指出的,该名称TracebackType基本上是内部traceback类型的别名,并通过在types模块中引发异常设置.实际traceback类型可以在CPython代码中找到.

  • 应该注意的是,这不是类型的“真实”名称——没有“真实”名称——也不是定义类型的地方。`types.py` 只是引发异常以获取回溯并设置 `TracebackType = type(tb)`。 (3认同)