是否有一种方法可以在每次我用python打印某些东西时打印类/函数名?
在Python中,每当调用print函数时,是否可以打印类和函数名 请原谅是否有一种方法可以在每次我用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" 使用模块而不是打印语句 可以找到可用属性列表,包括:
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%的时间内工作。能否提供一个小的总结,并给出一个示例?能否提供一个小的总结,说明它的作用,还有一个例子吗?谢谢。虽然我已经决定使用日志模块,但这正是我最初寻找的答案。我学到了很多!谢谢虽然我已经决定使用日志模块,但这正是我最初寻找的答案。我学到了很多!