在Python中,每当调用“Print”函数时,是否可以打印“类和函数名”?
例如,
class SimpleClass:
def function1(self):
print "This is the printed msg"
c = SimpleClass()
c.function1()
"Output wanted"
SimpleClass:function1 - "This is the printed msg"
答案 0 :(得分:3)
使用logging模块而不是print语句。
可用属性列表位于here,包括:args, asctime, created, exc_info, filename, funcName, levelname, levelno, lineno, module, msecs, message, msg, name, pathname, process, processName, relativeCreated, thread, threadName
。
答案 1 :(得分:1)
您使用的是Python 2.x,因此print
不是一个功能,无法像您想要的那样被覆盖。但是,您可以使用print
制作 from __future__ import print_function
函数,就像在Python 3.x中一样,假设您使用的是Python 2.6或更高版本。然后你可以用自己的print
轻轻地覆盖它,你可以随心所欲。 (好吧,压倒一切都是微不足道的;获得类和方法名称的情况要差一些。)
from inspect import currentframe
_print = print
def print(*args, **kwargs):
frame = currentframe().f_back
fname = frame.f_code.co_name
self = frame.f_locals.get("self", None)
qname = (type(self).__name__ + "." + fname) if self else fname
_print(qname, end=": ")
_print(*args, **kwargs)
从函数的局部变量中挖掘self
以查看它是否是一种欺骗方法,因为这只是一种惯例而self
可以指任何值,但它应该在99.44%的时间内起作用。