El objeto str no es python invocable

Funciones y métodos de Python

Es fácil cometer errores al nombrar variables. Uno de los errores más comunes es llamar a una variable & ldquo; str & rdquo ;. Si intenta utilizar el método Python con el mismo nombre en su programa, & nbsp; & ldquo; typeerror: & lsquo; str & rsquo; el objeto no es invocable & rdquo; se devuelve.

En esta guía, hablamos sobre lo que significa el error de Python y por qué se genera. Analizamos dos ejemplos de este error en acción para que aprenda a resolverlo.




El problema: typeerror: & lsquo; str & rsquo; el objeto no es invocable

Nuestro mensaje de error es un TypeError. Esto nos dice que estamos intentando ejecutar una operación en un valor cuyo tipo de datos no es compatible con esa operación específica.

Eche un vistazo al resto de nuestro mensaje de error:

 typeerror: el objeto 'str' no es invocable 

Cuando intentas llamar a < una href = "/ python-string-methods/">string como lo haría con una función, se devuelve un error. Esto se debe a que las cadenas no son funciones. Para llamar a una función, agrega () al final del nombre de una función.

Este error ocurre comúnmente cuando asigna una variable llamada & ldquo; str & rdquo; y luego intente usar la función str () . Python interpreta & ldquo; str & rdquo; como una cadena y no puede utilizar la función str () en su programa.

Echemos un vistazo a dos escenarios de ejemplo en los que se ha producido este error.




Escenario de ejemplo: declarar una variable llamada & ldquo; str & rdquo;

Escribimos un programa que calcula cuántos años tiene un niño hasta que cumpla 18 años. Luego imprimimos este valor en la consola.

El 81% de los participantes afirmaron que se sentían más seguros de sus perspectivas laborales después de asistir a un bootcamp. Asigne a un bootcamp hoy mismo.

El graduado promedio de un bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Empecemos por recopilar la edad actual del joven mediante el uso de una declaración input () :

 str = input (" ¿Cuál es tu edad? ") 

A continuación, calculamos cuántos años le quedan a un joven hasta que cumpla 18 años. Haga esto restando el valor que un usuario le ha dado a nuestro programa de 18:

 years_left = 18 - int (str ) 

Usamos el método int () para convertir el entero de edad. Esto nos permite restar la edad del usuario de 18 años.


A continuación, convertimos este valor en una cadena y lo imprimimos en la consola. Convertimos el valor en una cadena porque necesitamos concatenarlo en una cadena. Para hágalo, todos los valores deben tener el formato de una cadena.

Convirtamos el valor de & ldquo; years_left & rdquo; e imprímalo en la consola:

 years_left = str (years_left) print (" Te quedan "+ years_left +" años hasta que cumplas 18 años ") 

Este código imprime un mensaje informándonos de cuántos años le quedan a un usuario hasta que cumpla 18 años. Ejecute nuestro código y vea qué sucede:

 ¿Cuál es su edad? 7 Traceback (última llamada más reciente): Archivo" main.py ", línea 5, en & lt; módulo & gt; years_left = str (years_left) TypeError: el objeto 'str' no es invocable 

Nuestro código devuelve un error. Hemos intentado utilizar el método str () para convertir el valor de & ldquo; years_left & rdquo ;. Anteriormente en nuestro programa, declaramos una variable llamada & ldquo; str & rdquo ;. Python piensa & ldquo; str & rdquo; es una cadena en nuestro programa, no una función.

Para solucionar este error, cambiamos el nombre de la variable & ldquo; str & rdquo; to & ldquo; age & rdquo ;:

 age = input ("¿Cuál es su edad?") years_left = 18 - int (edad) years_left = str (years_left) print ("Te quedan" + years_left + "años hasta que cumplas 18 años") 

Como hemos cambiado el nombre de nuestra variable, Python usará la función str () cuando la llamamos. Ya no hay una variable que ocupe ese nombre. Ejecutemos nuestro código de nuevo:

 ¿Qué edad tienes? 7 Te quedan 11 años hasta que cumplas 18. 

Nuestro código calcula con éxito cuántos años le quedan a un joven hasta que cumpla 18.




Escenario de ejemplo: String Formateo con%

Este error también se debe a un error en el formato de cadena .

Agreguemos algunas funciones nuevas a nuestro último programa. Primero, le pedimos a un usuario su nombre. En segundo lugar, vamos a crear el mensaje que le dice al usuario cuántos años le quedan hasta que cumpla los 18 usando la sintaxis de formato%.


Comience preguntando a un usuario su nombre:

 nombre = input ("¿Cuál es su nombre?") 

A continuación, revisamos nuestra declaración print () para usar la sintaxis de formato% string. Hacemos esto porque la sintaxis% es más fácil de leer al formatear varios valores en una cadena. Aquí está el código que usamos para formatear el mensaje que le mostraremos al usuario:

 print ("% s, te quedan% s años hasta que cumplas 18. "(nombre, edad)) 

Nuestro programa final se ve así:

 name = input ("¿Cuál es tu nombre?") age = input ("¿Cuál es tu edad?") Years_left = 18 - int (age) years_left = str (years_left) print ("% s, te quedan% s años hasta que cumple 18 años. "(nombre, edad)) 

Nuestro código reemplaza el símbolo del tipo de cadena% s con los valores & ldquo; nombre & rdquo; y "edad", respectivamente. Ejecutemos nuestro código y veamos qué sucede:

 Traceback (última llamada más reciente): Archivo "main.py", línea 7, en & lt; módulo & gt; print ("% s, te quedan% s años hasta que cumplas 18." (nombre, edad)) TypeError: El objeto 'str' no es invocable 

Nuestro código devuelve un error porque hemos olvidado usar el operador% para separar nuestra cadena y los valores que queremos agregar a nuestra cadena.

Nuestro código cree que estamos tratando de llamar a & ldquo;% s, tienes% s Quedan años hasta que cumpla 18. & rdquo; como una función porque la cadena va seguida de paréntesis.

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a combinar con un bootcamp. Dos meses después de graduarme, encontré mi sueño trabajo que se alinea con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Para resolver este error, agregamos un signo de porcentaje entre & ldquo;% s, te quedan% s años hasta que cumplas 18 años & rdquo; y (nombre, edad) en nuestro código:

 print ("% s, tienes% Quedan años hasta que cumpla 18 años. "% (nombre, edad)) Esta revisión corrige el error: ¿Cuál es su nombre? Alex ¿Qué edad tienes? 7 Alex, te quedan 11 años hasta que cumplas 18.