在早期Python中重现Python 3.3的效果
它允许人们获取函数的限定名称(想想module.submodule.class.function)或类似名称在早期Python中重现Python 3.3的效果,python,python-2.7,python-3.x,cpython,Python,Python 2.7,Python 3.x,Cpython,它允许人们获取函数的限定名称(想想module.submodule.class.function)或类似名称 有没有办法在Python2.6和2.7中重现此属性?根据PEP中提出的参数判断,这似乎是不可能的。还有im_class,它为您提供了模块的定义类,但仅此而已 当然,你可以从globals()浏览所有内容,直到找到与你的\uuuuu name\uuuuuuu匹配的内容,但这可能会变得任意复杂,而且非常可怕。如果您确实决定这样做,请同时检查两者是否具有相同的标识(a是b),因为任何两个东西都
有没有办法在Python2.6和2.7中重现此属性?根据PEP中提出的参数判断,这似乎是不可能的。还有
im_class
,它为您提供了模块的定义类,但仅此而已
当然,你可以从
globals()
浏览所有内容,直到找到与你的\uuuuu name\uuuuuuu
匹配的内容,但这可能会变得任意复杂,而且非常可怕。如果您确实决定这样做,请同时检查两者是否具有相同的标识(a是b
),因为任何两个东西都可以具有相同的\uuuu名称我编写了一个黑客程序,通过使用inspect(用于类)和AST(用于源文件)模块来获取(嵌套)类的限定名称,并根据行号组合结果。你可以在这里找到它:
我编写了一个库,它为较旧的Python版本提供了一个等价的\uuuuqalname\uqlname
:通过彻底搜索属性树,从全局名称空间中的对象开始,可以为嵌套在类中的对象获得它。我不相信有任何方法可以复制其他函数中定义的函数的
指示符。我不太清楚您的建议是什么,在找到局部变量()和您自己的标识符之前爬虫全局变量()?如果不实际调用函数,您就无法获得locals()
。但是你可以在globals()
中的每个对象的\uuuu dict\uuuuu
中爬行,然后是所有这些对象的\uu dict\uuuuu
等等。恭喜你挠了我一段时间的痒<代码>pip安装质量名称