是否有一种方法可以在每次我用python打印某些东西时打印类/函数名?

是否有一种方法可以在每次我用python打印某些东西时打印类/函数名?,python,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" 使用模块而不是打印语句 可以找到可用属性列表,包括:

在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"
使用模块而不是打印语句

可以找到可用属性列表,包括:args、asctime、created、exc_info、filename、funcName、levelname、levelno、lineno、module、msec、message、msg、name、pathname、process、processName、relativeCreated、thread、threadName。

使用module而不是print语句


可以找到可用属性的列表,包括:args、asctime、created、exc_info、filename、funcName、levelname、levelno、lineno、module、msecs、message、msg、name、pathname、process、processName、relativeCreated、thread、threadName。

您使用的是Python 2.x,看起来像,因此,print不是一个函数,不能像您希望的那样被重写。但是,假设您使用的是Python2.6或更高版本,则可以使用from\uuuuu future\uuuuu导入print\u函数使print成为Python3.x中的函数。然后你可以用自己喜欢的打印来覆盖它。那么压倒一切的是微不足道的,;获取类和方法名称的难度稍小

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%的时间内工作。

您使用的是Python 2.x,看起来像这样,所以print不是一个函数,不能像您希望的那样被重写。但是,假设您使用的是Python2.6或更高版本,则可以使用from\uuuuu future\uuuuu导入print\u函数使print成为Python3.x中的函数。然后你可以用自己喜欢的打印来覆盖它。那么压倒一切的是微不足道的,;获取类和方法名称的难度稍小

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%的时间内工作。

能否提供一个小的总结,并给出一个示例?能否提供一个小的总结,说明它的作用,还有一个例子吗?谢谢。虽然我已经决定使用日志模块,但这正是我最初寻找的答案。我学到了很多!谢谢虽然我已经决定使用日志模块,但这正是我最初寻找的答案。我学到了很多!