你在这里遇到两个基本问题:
幸运的是,sys.modules
对那里发生的事情并不挑剔,因此可以使用包装器,但是只能用于模块访问(即import somemodule; somemodule.salutation('world')
,对于同模块访问,你几乎必须从替换类中提取方法并将其添加到globals()eiher
中。类上的自定义方法(我喜欢使用.export()
)或泛型函数(例如已经列出的答案)要记住的一件事:如果包装器每次都在创建一个新实例,而全局解决方案不是,最终,你会得到完全不同的行为。哦,你不能同时使用两者-一种是另一种。