Chr*_*ris 2 python reflection inspect
有没有办法对任何随机函数实现这一点?
class Class:
def function(self):
pass
import inspect
print(inspect.getlineno(Class.function))
Run Code Online (Sandbox Code Playgroud)
这只是给出:
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'
Run Code Online (Sandbox Code Playgroud)
inspect.getlineno需要一个框架对象。
你应该使用inspect.getsourcelines:
import inspect
class Class:
def function(self):
pass
print(inspect.getsourcelines(Class.function))
Run Code Online (Sandbox Code Playgroud)
输出
([' def function(self):\n', ' pass\n'], 4)
Run Code Online (Sandbox Code Playgroud)
它返回一个包含实际源代码和定义行号的二元组。
print(inspect.getsourcelines(Class.function)[1])
# 4
Run Code Online (Sandbox Code Playgroud)