Python Stacktrace:calledfuncs 字典具有奇怪的语法:“Class”>“.method”
当我查看使用以下命令生成的字典时:
import trace
tracer = trace.Trace(countfuncs=True)
tracer.runfunc(callableObj, *args, **kwargs)
print tracer.results().calledfuncs
在一台机器上(python 1.3),我得到了打印字典键的奇怪语法;一个键看起来像:
('/path/to/file.py', 'module', "SomeClass'>.some_method")
我想知道的是字符: '>;
在另一台装有 python 1.3.1 的机器上,第三个元组条目看起来像预期的那样,没有 '>;少量。
您是否知道它从何而来以及为什么它出现在一台机器上而不是另一台机器上?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你确定你说的不是Python 2.3吗?
在trace.py中,类名的计算公式如下:
通常
str(someclass)
会给你类似module.klass
的东西,所以在点处分割会给你一个干净的类名称。由于某种原因,您正在查看的系统上的类给出了一个以您所看到的字符串结尾的 repr,因此可能类似于
。我会尝试在该机器上编辑 trace.py 以(暂时)不拆分 clsname 变量,然后您可能能够弄清楚它真正应该说什么。
Are you sure you didn't mean Python 2.3?
In trace.py, the classname is calculated from:
Usually
str(someclass)
gives you something likemodule.klass
so splitting at the dot gives you a clean name for the class. For some reason the class on the system you are looking at is giving a repr that ends with the string you are seeing, so perhaps it was something like<proxy for 'module.klass'>
.I would try editing trace.py on that machine to (temporarily) not split the clsname variable and then you might be able to figure out what it should really say.