2012-08-23 16 views
7

ya que suelo usar ipython para jugar con código en desarrollo, me encuentro con la situación en la que cambio el código de una clase después de importarlo a ipython. Quiero volver a cargar la nueva definición de clase sin reiniciar ipython. El problema es que la función de recarga en ipython solo funciona con módulos.¿Cómo puedo volver a cargar una definición de clase en ipython

que han buscado la solución a este problema y encontró un hilo anterior: how to reload a Class in python shell?

Sin embargo, he seguido los criterios allí, pero no funcionó. Creo que la razón por la que funciona en ese hilo es que el nombre de clase pasó a ser el mismo con el nombre del módulo, por lo que se puede encontrar en sys.modules y, por lo tanto, se puede eliminar. Cuando el nombre de la clase es diferente del nombre del módulo, ese enfoque no puede funcionar.

Me pregunto si hay solución a este problema. ¡Gracias!

Respuesta

5

Sí, hay una extensión de IPython llamada 'autoreload' para exactamente este tipo de cosas. Here's the documentation sobre cómo usarlo.

+0

hace es invocado la autoreload sólo funciona para los objetos de clase creados después de la autoreload? Tenía un objeto de clase que la definición había sido modificada. Intenté la autorecarga pero no funcionó para ese objeto de clase. Pero cuando creé otro objeto de clase después de invocar la autorrecarga, el nuevo objeto de clase puede actualizarse con el código que está cambiando constantemente. – Wen

+0

No estoy seguro de los detalles, pero es posible que solo funcione para los elementos creados después de habilitar la recarga automática. –

-1

También puede recargar módulo individual

Por ejemplo:

#reload every time 
import my_module 
reload(my_module) 

#reload a module recursively  
import deep_reload_my_module 
dreload(deep_reload_my_module) 
Cuestiones relacionadas