我希望使用[]
方法而不是{{1}打印容器(例如打印容器({}
,()
,str()
)。 }。编写一个能够做到这一点的函数
repr()
但如果我可以扩展或修饰print
statement或print()
function(在Python 2.7中),它会非常好用
我可以做类似这样的事情,它可以在python 3中运行(在{3.2}中的{3.2}中测试)
def str_print_list(alist):
print "["+", ".join(map(str, alist))+"]"
这给了我一个输出
class foo():
def __str__(self):
return "String"
def __repr__(self):
return "Repr"
print([foo()])
def my_decorator(func):
def inner(alist):
if isinstance(alist, list):
return func("["+", ".join(map(str, alist))+"]")
else:
return func(alist)
return inner
print = my_decorator(print)
print([foo()])
但在
的python 2.7.6中给出了语法错误[Repr]
[String]
直到我导入
print = my_decorator(print)
这是有道理的,因为语句不能(据我所知)被装饰或重新分配。
所以我的问题是
from __future__ import print_function
功能?在这种情况下,我知道一个事实,这将是我个人使用,主要用于调试答案 0 :(得分:3)
list
并传递它 - 这正是继承所做的。像这样:
class MyPrintableList(list):
def __repr__(self):
return "[{}]".format(",".join(self))
print MyPrintableList([foo()])