Python Stacktrace:calledfuncs字典,语法奇怪:“Class'>.method”

2024-05-20 05:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

当我查看生成的字典时:

import trace
tracer = trace.Trace(countfuncs=True)
tracer.runfunc(callableObj, *args, **kwargs)
print tracer.results().calledfuncs

在一台机器(Python1.3)上,我得到了一个奇怪的语法,用于打印字典的键;键看起来像:

('/path/to/file.py', 'module', "SomeClass'>.some_method")

我想知道的是人物:'>

在另一台使用python1.3.1的机器上,第三个tuple条目看起来像预期的,没有'>;位。你知道吗

你知道这是从哪里来的吗?为什么它在一台机器上,而不是在另一台机器上?你知道吗


Tags: importgt机器true字典traceargsresults
1条回答
网友
1楼 · 发布于 2024-05-20 05:10:04

你确定你不是指Python2.3吗?你知道吗

在跟踪.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'>。你知道吗

我会尝试编辑跟踪.py在那台机器上(暂时)不拆分clsname变量,然后您就可以知道它真正应该说什么了。你知道吗

相关问题 更多 >