首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重载打印python

重载打印python
EN

Stack Overflow用户
提问于 2009-02-15 07:26:05
回答 9查看 97.7K关注 0票数 57

我可以重载print函数并从内部调用普通函数吗?我想要做的是,在特定的行后,我希望print调用我的print,它将调用普通的print,并将一个副本写入文件。

我也不知道如何重载print。我不知道如何处理可变长度的参数。我很快就会查到的,但是overload print python刚刚告诉我在我正在使用的2.x版本中不能重载print

EN

回答 9

Stack Overflow用户

发布于 2012-04-11 21:06:25

对于那些查看以前标注日期的答案的人,从“Python2.6”版本开始,对原始发帖者的问题有了一个新的答案。

在Python 2.6及更高版本中,您可以禁用print语句以支持print函数,然后使用您自己的print函数覆盖print函数:

代码语言:javascript
复制
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__名称空间。

票数 61
EN

Stack Overflow用户

发布于 2009-02-15 07:37:01

重载print是Python3.0的一个设计特性,旨在解决您在Python2.x中无法做到这一点的问题。

但是,您可以覆盖sys.stdout。(example.)只需将其分配给另一个类似文件的对象,即可执行您想要的操作。

或者,您可以只通过unix tee命令来传输您的脚本。python yourscript.py | tee output.txt将同时打印到标准输出和output.txt,但这将捕获所有输出。

票数 33
EN

Stack Overflow用户

发布于 2013-03-24 01:45:26

代码语言:javascript
复制
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)

)
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/550470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档