#hack.py import __builtin__ __builtin__._open = open __builtin__.open = '__builtin__'
としておいて、
>>> open <built-in function open> >>> import hack >>> open '__builtin__' >>> eval('open', {'open': 'globals'}, {'open': 'locals'}) 'locals' >>> eval('open', {'open': 'globals'}, {}) 'globals' >>> eval('open', {}, {}) '__builtin__'
となる。どう考えても pythonic ではない。
さらにどっかの名前空間に取り込まれてる場合は
>>> import gc >>> for ns in gc.get_referrers(open): for k, v in ns.items(): if v == open: print k
ここで書き換えられる。