How to override python builtins with an import statementから、次のコードを取得しました。
from __future__ import print_function
def print(*args, **kwargs):
.
. some intervening logic
.
return __builtins__.print(*args, **kwargs)
このコードは問題なく動作しますが、モジュール スコープがあります。つまり、このファイル内に print ステートメントがある場合、それらは期待どおりに機能し、定義どおりに print() 関数を通過します。ただし、それを (foo import * から) インポートしても、それをインポートしたモジュール内では効果がありません。
印刷機能を「グローバルに」オーバーライドしたい場合、これをどのように行うのが最善ですか。理想的には:
from MyOverrides import *
.
.
.
class foo():
.
.
def bar( self ):
print( "this is my overridden print statement" )
ここでfuture、オーバーライド、および print()について何が欠けていますか?
私の環境は 2.6 以降ですが、3.0 ではありません。