【发布时间】:2013-01-02 23:53:55
【问题描述】:
我试图在运行时找出一个对象被实例化的位置,因为这样可以向我的库的用户提供非常有用的错误消息。
假设我们有以下代码:
import mylib
obj = mylib.MyClass()
obj 然后从mylib 传递给另一个类的实例,然后开始一段美妙的旅程。在某个地方,obj 导致了一些不好的事情发生,我想向用户指出 obj 被实例化的位置。
我希望我可以使用inspect 模块来找出实例化obj 的文件和行号。不幸的是,inspect.getsourcefile 和 inspect.getsourcelines 不支持实例。是否存在不支持此功能的技术原因?
还有其他方法可以获得我正在寻找的数据吗?
【问题讨论】:
-
是不是太复杂了?当不好的事情发生时,为什么不做我们所有人(大概)做的事情呢?如:import traceback + try: ... 除了:traceback.print_exc()