我试图在运行时找出实例化对象的位置,因为这样可以为我的库用户提供非常有用的错误消息.
假设我们有以下代码:
import mylib
obj = mylib.MyClass()
Run Code Online (Sandbox Code Playgroud)
obj然后传递给另一个类的实例mylib,并继续进行一次精彩的旅程.沿着这条线的某个地方,obj会导致不好的事情发生,我想将用户指向obj实例化的地方.
我希望我可以使用inspect模块找出哪个文件以及obj实例化的行号.不幸的是,inspect.getsourcefile并且inspect.getsourcelines不支持实例.是否存在技术原因导致不支持此操作?
有没有其他方法可以获得我正在寻找的数据?
您可以在类的构造函数中记录此信息:
import traceback
class MyClass(object):
def __init__(self):
self.traceback = traceback.extract_stack()[-2]
obj = MyClass()
print 'Instantiated in {0}:{1}'.format(*obj.traceback)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |