python如何以编程方式获取类定义的行号

标签 python

假设我有一个名为 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/

相关文章:

Python OpenCV HoughLinesP 直线检测不准确

python - 重新计算循环内的字符串长度

python Pandas : pivot_table silently drops indices with nans

Python dateutil 解析器解析错误的秒数

python - self 如何在 python 的类中工作

python - 如何在 "teardown"框架中的 fixture 中使用 "pytest"中的测试结果

python - 如何连接 Python 和 C 程序?

python - 如何在 Python 中取消透视数据集

python - Tkinter Canvas Postscript 不捕获屏幕框架外的 Window 元素

python - 如何在私有(private)子网上运行Dataflow python?