Agregar dinámicamente funciones a un módulo de Python

Nuestro marco de trabajo requiere envolver ciertas funciones en un código de placa de referencias feo:

def prefix_myname_suffix(obj): def actual(): print 'hello world' obj.register(actual) return obj 

Pensé que esto podría simplificarse con un decorador:

 @register def myname(): print 'hello world' 

Sin embargo, eso resultó ser bastante complicado, principalmente porque el marco busca cierto patrón de nombres de funciones a nivel de módulo.

He intentado lo siguiente dentro del decorador, en vano:

 current_module = __import__(__name__) new_name = prefix + func.__name__ + suffix # method A current_module[new_name] = func # method B func.__name__ = new_name current_module += func 

¡Cualquier ayuda sería apreciada!

    utilizar cualquiera

     current_module.new_name = func 

    o

     setattr(current_module, new_name, func) 

    Parece que la solución a su problema sería hacer que la función decorada actúe como la función original.

    Intente usar la función mergeFunctionMetadata de Twisted, que se encuentra aquí: twisted / python / util.py

    Hace que su función decorada actúe como la original, ojalá que el marco la recoja.