¿Cómo arreglar la redefinición de str?

Experimentando con el intérprete de Python, asigné involuntariamente una cadena a str siguiente manera:

 str = 'whatever' 

Más tarde, en la misma sesión, ingresé otra statement con una llamada a str() , digamos …

 double_whatever = str(2) + ' * whatever' 

…, y obtuvo el error TypeError: 'str' object is not callable (en lugar de la salida esperada '2 * whatever' ). Una respuesta de SO relacionada me ayudó a ver rápidamente el error que cometí.

Sin embargo, todavía no estoy claro cómo arreglar las llamadas a str() en la sesión afectada. Por supuesto, podría salir del intérprete de Python e iniciar otra sesión, pero tengo curiosidad por evitar eso.

Hasta ahora he confirmado que …

 double_whatever = __builtins__.str(2) + ' * whatever' # => '2 * whatever' 

… sigue funcionando como yo quiero; pero no tengo claro cómo volver a no necesitar los __builtins__. calificación.

¿Cómo puedo corregir mi redefinición involuntaria de str para que mis llamadas a str() en la sesión de intérprete de Python funcionen de nuevo?

Simplemente borre su str dominante:

 del str 

Lea http://www.diveintopython.net/html_processing/locals_and_globals.html para obtener una explicación de cómo Python encuentra una variable para usted.

La idea básica es que primero se busque el espacio de nombres donde se definen las variables, por lo que si define una variable con el nombre str , se str la built-in .