考虑到Python的动态性,如果这不可能会让我很惊讶:
我想更改sys.stdout.write
的实现。
我从我的另一个问题的此答案中得到了灵感:https://dev59.com/3mAf5IYBdhLWcg3wwk0V#24492990
我尝试简单地编写了以下内容:
original_stdoutWrite = sys.stdout.write
def new_stdoutWrite(*a, **kw):
original_stdoutWrite("The new one was called! ")
original_stdoutWrite(*a, **kw)
sys.stdout.write = new_stdoutWrite
但它告诉我AttributeError:'file'对象属性'write'是只读的
。
这是一个不错的尝试,以防止我做一些可能(很可能)愚蠢的事情,但我仍然想继续操作。我猜测解释器有一种查找表,可以修改,但我在Google上没有找到任何类似的东西。__setattr__
也没有起作用 - 它返回完全相同的关于属性为只读的错误。
如果有必要的话,我特别寻找Python 2.7的解决方案,尽管没有理由不提供适用于其他版本的答案,因为我认为未来的其他人可能会寻找与其他版本相关的类似问题的答案。
sys.stdout
。 - Wooble