该encodings
模块没有很好的文档说明,因此我将使用codecs
,这是:
import codecs
def encalias(oldname, newname):
old = codecs.lookup(oldname)
new = codecs.CodecInfo(old.encode, old.decode,
streamreader=old.streamreader,
streamwriter=old.streamwriter,
incrementalencoder=old.incrementalencoder,
incrementaldecoder=old.incrementaldecoder,
name=newname)
def searcher(aname):
if aname == newname:
return new
else:
return None
codecs.register(searcher)
这是Python 2.6-界面在早期版本中有所不同。
如果您不介意依靠特定版本的未记录内部结构,那么@Lennart的别名方法当然也可以-确实比这更简单;-)。但是我怀疑(正如他看来的那样)这一点更易于维护。