我可以重载print
函数并从内部调用普通函数吗?我想要做的是,在特定的行后,我希望print
调用我的print
,它将调用普通的print
,并将一个副本写入文件。
我也不知道如何重载print
。我不知道如何处理可变长度的参数。我很快就会查到的,但是overload print python刚刚告诉我在我正在使用的2.x版本中不能重载print
。
发布于 2012-04-11 21:06:25
对于那些查看以前标注日期的答案的人,从“Python2.6”版本开始,对原始发帖者的问题有了一个新的答案。
在Python 2.6及更高版本中,您可以禁用print语句以支持print函数,然后使用您自己的print函数覆盖print函数:
from __future__ import print_function
# This must be the first statement before other statements.
# You may only put a quoted or triple quoted string,
# Python comments, other future statements, or blank lines before the __future__ line.
try:
import __builtin__
except ImportError:
# Python 3
import builtins as __builtin__
def print(*args, **kwargs):
"""My custom print() function."""
# Adding new arguments to the print function signature
# is probably a bad idea.
# Instead consider testing if custom argument keywords
# are present in kwargs
__builtin__.print('My overridden print() function!')
return __builtin__.print(*args, **kwargs)
当然,您需要考虑这个打印函数在这一点上只适用于模块范围。您可以选择覆盖__builtin__.print
,但需要保存原始的__builtin__.print
;这很可能会破坏__builtin__
名称空间。
发布于 2009-02-15 07:37:01
重载print
是Python3.0的一个设计特性,旨在解决您在Python2.x中无法做到这一点的问题。
但是,您可以覆盖sys.stdout。(example.)只需将其分配给另一个类似文件的对象,即可执行您想要的操作。
或者,您可以只通过unix tee
命令来传输您的脚本。python yourscript.py | tee output.txt
将同时打印到标准输出和output.txt,但这将捕获所有输出。
发布于 2013-03-24 01:45:26
class MovieDesc:
name = "Name"
genders = "Genders"
country = "Country"
def __str__(self):
#Do whatever you want here
return "Name: {0}\tGenders: {1} Country: {2} ".format(self.name,self.genders,self.country)
)
https://stackoverflow.com/questions/550470
复制相似问题