是否有可能创建python函数的真实副本?最明显的选择是http://docs.python.org/2/library/copy.html,但我读到了:
它通过返回原始对象来"复制"函数和类(浅和深);
我需要一个真正的副本,因为我可能会更改该函数的某些属性.
更新:
我知道评论中提到的所有可能性.我的用例基于元编程,我从一些声明性规范中构造类.完整的细节对于SO来说太长了,但基本上我有一个类似的功能
def do_something_usefull(self,arg):
self.do_work()
Run Code Online (Sandbox Code Playgroud)
我将这个方法添加到各个类.类可以完全不相关.使用mixin类不是一个选项:我将有许多这样的函数,并最终为每个函数添加一个基类.我目前的"解决方法"是将此函数包装在"工厂"中,如下所示:
def create_do_something():
def do_something_usefull(self,arg):
self.do_work()
Run Code Online (Sandbox Code Playgroud)
这样我总是得到一个新的do_something_useful函数,但是我必须像这样包装我的所有函数.
我相信我,我知道,这不是"正常"的OO编程.我知道如何解决"通常"这样的问题.但这是一个动态代码生成器,我希望尽可能保持轻量级和简单的一切.由于python函数是非常普通的对象,我不认为如何复制它们太奇怪了!?