Jul*_*ULD 6 python inspect traceback
有没有办法让以下代码:
import traceback
def log(message):
print "%s: %s" %(traceback.extract_stack()[0:-1][-1][2], message)
def f1():
log("hello")
class cls(object):
def f1(self):
log("hi there")
f1()
mycls = cls()
mycls.f1()
Run Code Online (Sandbox Code Playgroud)
显示:
f1: hello
cls.f1: hi there
Run Code Online (Sandbox Code Playgroud)
代替:
f1: hello
f1: hi there
Run Code Online (Sandbox Code Playgroud)
?
我试图使用模块'inspect'但没有成功......
朱利安
编辑:
这里的要点是'log'函数能够自己检索其调用者名称(使用traceback,inspect或任何必要的平均值).
我不想将类名称或"消息"之外的任何内容传递给"日志"功能.
jmd*_*_dk -1
检查模块非常强大,可以traceback以与获取函数名称(可能还有类名称)类似的方式使用。但是您可以简单地利用self实例变量,它知道自己的类型/类:
import inspect
class cls(object):
def f1(self):
this_class_name = type(self).__name__
this_func_name = inspect.currentframe().f_code.co_name
print(this_class_name, this_func_name)
mycls = cls()
mycls.f1()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |