从How to override python builtins with a import statement我获得了以下代码:
from __future__ import print_function
def print(*args, **kwargs):
.
. some intervening logic
.
return __builtins__.print(*args, **kwargs)
此代码工作正常,但具有模块范围。也就是说,如果此文件中有打印语句,它们按预期工作,通过定义的 print() 函数。但是,导入它(从 foo import *)在导入它的模块中没有任何影响。
如果我想“全局”覆盖打印功能,最好如何完成。理想情况下:
from MyOverrides import *
.
.
.
class foo():
.
.
def bar( self ):
print( "this is my overridden print statement" )
我在这里错过了future、 overrides 和 print() 什么?
我的环境是 2.6 及更高版本,但不是 3.0。