python - 获取函数的源文件行号
问题描述
有没有办法为任何随机函数完成这个?
class Class:
def function(self):
pass
import inspect
print(inspect.getlineno(Class.function))
这只是给出:
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\inspect.py", line 1479, in getlineno
return frame.f_lineno
AttributeError: 'function' object has no attribute 'f_lineno'
解决方案
inspect.getlineno
需要一个框架对象。
您应该inspect.getsourcelines
改用:
import inspect
class Class:
def function(self):
pass
print(inspect.getsourcelines(Class.function))
输出
([' def function(self):\n', ' pass\n'], 4)
它返回一个包含实际源代码和定义行号的 2 元组。
print(inspect.getsourcelines(Class.function)[1])
# 4
推荐阅读
- python - 使用列表理解访问最后一个列表元素
- java - 如何从偶数 {2,4,6,8,10,14} 中找到丢失的数字
- scala - 在 Scala 中的 Cats 之外是否有任何三重等于 === 方法?
- azure - Azure - VMSS - 数据盘
- xamarin - 从列表中多选
- swift - 在操场上使用日期时“执行被中断”。谁能解释一下?
- google-cloud-platform - Google Cloud Server 中的 SSH 连接问题
- interpolation - 将 xarray 的内置 interp 函数与 dask 一起使用时出错
- oracle - 异常 - Oracle 到 Db2
- android - 在之前由 android 构建的其他构建 apk 上通过颤振在 Play 商店中更新 apk 构建