有没有办法在每次我在python中打印时打印类/函数名称?

时间:2015-04-21 20:07:39

标签: python

在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"

2 个答案:

答案 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%的时间内起作用。