假设我有一个名为 test.py 的模块。 在这个文件中,我知道一个名为 dummy 的类。 导入后如何获取类虚拟定义的行号?
有API可以做这样的事情吗?
如果 dummy 是一个函数,那么 dummy.__code__.co_firSTLineno
将返回行号。但是如果 dummy 是一个类,它就没有__code__
属性
我想知道有没有一种方法可以在不解析文件的情况下返回 no 行。
最佳答案
inspect.findsource(test.dummy)[1]
在源文件中通过正则表达式搜索提供行号(相当慢)。
如果你定义类,行号可以像这样公开:
class MyClass:
def test_01(self):
assert 1
_classline_ = inspect.currentframe().f_code.co_firstlineno
_thisline_ = inspect.currentframe().f_lineno
更新 2020/Python 3.9+:inspect.findsource
现在使用(慢)ast
而不是正则表达式。 (bpo-35113/commit 696136b9)
关于python如何以编程方式获取类定义的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41971660/