Есть ли возможность создавать реальные копии функций python? Наиболее очевидным выбором был http://docs.python.org/2/library/copy.html, но там я читал:
Он выполняет "копирование" функций и классов (неглубоко и глубоко), посредством возвращение исходного объекта без изменений;
Мне нужна реальная копия, потому что я могу изменить некоторые атрибуты функции.
Update:
Я знаю все возможности, упомянутые в комментариях. Мой вариант использования основан на метапрограмме, где я строю классы из некоторых декларативных спецификаций. Полная информация будет слишком длинной для SO, но в основном у меня есть функция типа
def do_something_usefull(self,arg):
self.do_work()
Я добавлю этот метод в различные классы. Тестовые классы могут быть полностью не связаны. Использование классов mixin не является вариантом: у меня будет много таких функций и в итоге будет добавлен базовый класс для каждой функции. Моим текущим "обходным решением" было бы обернуть эту функцию в "factory" следующим образом:
def create_do_something():
def do_something_usefull(self,arg):
self.do_work()
Таким образом, я всегда получаю новую функцию do_something_useful, но мне нужно обернуть все мои функции следующим образом.
Вы можете доверять мне, что я знаю, что это не "нормальное" программирование OO. Я знаю, как решить что-то подобное "нормально". Но это динамический генератор кода, и я бы хотел, чтобы все было максимально легким и простым. И поскольку функции python - вполне нормальные объекты, я не думаю, что это слишком странно, чтобы спросить, как их скопировать!