Cómo crear una copia de una función de python [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo hacer una copia profunda de una función en Python? 5 respuestas

¿Existe la posibilidad de crear copias reales de las funciones de python? La elección más obvia fuehttp://docs.python.org/2/library/copy.html pero ahí leí:

Realiza funciones y clases de "copia" (poco profundas y profundas), al devolver el objeto original sin cambios;

Necesito una copia real, porque podría cambiar algunos atributos de la función.

Actualizar:

Soy consciente de todas las posibilidades que se mencionan en los comentarios. Mi caso de uso se basa en la programación meta donde construyo clases de algunas especificaciones declarativas. Los detalles completos serían demasiado largos para SO, pero básicamente tengo una función como

def do_something_usefull(self,arg):
    self.do_work()

Añadiré este método a varias clases. Estas clases pueden estar completamente sin relación. Usar clases de mezcla no es una opción: tendré muchas de estas funciones y terminaría agregando una clase base para cada función. Mi "solución alternativa" actual sería envolver esta función en una "fábrica" ​​como esta:

def create_do_something():
    def do_something_usefull(self,arg):
        self.do_work()

De esa manera siempre obtengo una nueva función do_something_useful, pero tengo que envolver todas mis funciones de esta manera.

Puede confiar en mí, que soy consciente de que esta no es una programación OO "normal". Sé cómo resolver algo así "normalmente". Pero este es un generador de código dinámico y me gustaría que todo sea lo más liviano y simple posible. ¿Y como las funciones de Python son objetos bastante normales, no creo que sea demasiado extraño preguntar cómo copiarlos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta