当我查看使用以下内容生成的字典时:
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的另一台机器上,第三个元组条目看起来像预期的,没有'>位。
您是否知道它来自何处?为什么它在一台机器而不在另一台机器上?
答案 0 :(得分:0)
你确定你不是指Python 2.3吗?
在trace.py中,类名从:
计算 ...
clsname = str(classes[0])
...
if clsname is not None:
# final hack - module name shows up in str(cls), but we've already
# computed module name, so remove it
clsname = clsname.split(".")[1:]
clsname = ".".join(clsname)
funcname = "%s.%s" % (clsname, funcname)
通常str(someclass)
会为您提供类似module.klass
的内容,因此在点上拆分会为您提供一个干净的名称。由于某种原因,您正在查看的系统上的类正在给出一个以您看到的字符串结尾的repr,因此它可能类似于<proxy for 'module.klass'>
。
我会尝试在该机器上编辑trace.py(暂时)不拆分clsname变量,然后你就可以弄明白它应该说什么了。