2011-08-15 15 views
9

¿Por qué me da esto un error?Weirdness llamando a str() para convertir un entero a una cadena en Python 3?

>>> variable = str(21) 

Traceback (most recent call last): 
    File "<pyshell#101>", line 1, in <module> 
    variable = str(21) 
TypeError: 'str' object is not callable 
+4

¿nombraste una variable "str"? – geoffspear

+2

¿Definió otra variable de cadena y la asignó a una variable 'str'? porque al hacerlo, terminas sombreando la función integrada 'str()' e.g: 'str = 'test'; imprimir (str (124)) '. – mouad

+2

Los votos bajos están fuera de lugar. La mayoría de nosotros hemos sombreado builtins, al aprender. Mira cuántos ejemplos de código hay con 'list = [...]'. Actualicé el título de esta pregunta. – smci

Respuesta

33

Ese código solo no le dará un error. Por ejemplo, he intentado esto:

~ $ python3.2 
>>> variable = str(21) 
>>> variable 
'21' 

En algún lugar de su código que se está definiendo str = otra cosa, enmascarando la definición de orden interna str. Quítelo y su código funcionará bien.

10

Debido a que es probable que haya sobrescrito la función str llamando a su propia variable str.

+0

Creo que tienes razón. Cerré mi sesión IDLE (que tenía muchas muestras de código anteriores que encontré cargadas en línea), y ahora puedo usar la función str incorporada correctamente. Uno de esos ejemplos de código anteriores debe haber hecho algo peculiar al BIF str(). ¡Gracias! – blueplastic