yo de Python

El valor " self " solo está disponible dentro de un método cuando se llama y se especifica una funciòn .

No puede acceder a " self " en los argumentos especificados para un método, o dentro de una funciòn sin especificar " self " como argumento. De lo contrario, verá el error " NameError: name " self " no está definido & rdquo ;.

En esta guìa, hablamos sobre lo que significa este error y por qué se genera. Analizamos algunos fragmentos de còdigo para ayudarlo a descubrir còmo resolver este error en su còdigo.

NameError: name " self " no está definido

El " self " La variable contiene informaciòn sobre un objeto dentro de una clase . Todos los valores que se han asignado a un objeto están disponibles en " self " variable.

" self " debe pasarse como un argumento si desea utilizarlo en un método. El "yo" La variable no se puede usar en otros argumentos en un método porque solo es accesible desde dentro de un método.

Se encuentra el " NameError: name " self " no está definido " error si:

  • No especifica " self " como argumento
  • Utilice " self " como argumento en otro argumento

Repasemos cada uno de estos escenarios uno por uno.

Escenario # 1: " yo mismo " no aparece como argumento

" self " debe aparecer como un argumento para que sea accesible en un método. " yo mismo " no es una variable global. Es local dentro de una clase.

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

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

Escriba un programa que contenga informaciòn sobre pelìculas en una clase. Comenzamos por definir nuestra clase con un constructor que contiene valores sobre nuestra pelìcula:

Nuestra clase puede contener dos valores: el nombre de una pelìcula y el a√±o en que fue liberado. A continuaciòn, declaramos un método que nos permite cambiar el valor de " year_released & rdquo ;:

Para probar nuestro còdigo, creamos un objeto de nuestra clase. Este objeto representa la pelìcula Happy Gilmore, lanzada en 1996:

Hemos llamado al método change_year () en nuestro objeto < / a> para que podamos establecer el a√±o de lanzamiento de la pelìcula en 1996. Ejecutemos nuestro còdigo y veamos si funciona:

Nuestro còdigo devuelve un error.

Este error se genera porque no hemos pasado " self " como argumento a nuestro método. Solucionamos este error agregando " self " como el primer argumento en el change_year () método:

Ejecute nuestro còdigo nuevamente:

¬°Nuestro còdigo se ejecuta correctamente!

Escenario n. ° 2: usar " self " como argumento en otro argumento

" self " se eval√∫a cuando se llama a una funciòn. Esto significa que usted no puede tener un argumento que se refiera a " self " en la lista de argumentos especificados en una llamada de funciòn.

Actualice nuestro método " year_released " d para que, si no se especifica un a√±o de lanzamiento diferente, se imprima un mensaje en la consola que nos dice que el a√±o de una pelìcula no se ha cambiado.

Podemos hacer esto configurando un argumento predeterminado en nuestro còdigo:

" year_released " ahora tiene el valor predeterminado de " self.year_released & rdquo ;. Esto significa que si no especificamos un valor al que se debe cambiar el año, se establece un valor predeterminado. Si especificamos un valor, se usa el valor que especificamos en lugar del predeterminado.

Si el valor que especificamos no es igual al valor de " self.year_released & rdquo ;, el valor de " self.year_released " está cambiado. De lo contrario, se imprime un mensaje en la consola que le dice al usuario que la pelìcula no ha sido cambiada.

Después de que nuestra declaraciòn if ha sido evaluada, el valor de " year_released " se imprime en la consola.

Ejecutemos nuestro còdigo:

Nuestro còdigo aumenta un error. Esto se debe a que hemos intentado utilizar " self " en otro argumento de nuestra lista de argumentos.

Podemos corregir este error estableciendo el valor de " year_released " variable en " self.year_released " dentro de nuestra funciòn en lugar de en nuestra lista de argumentos:

En este còdigo, configuramos " year_released " para que sea igual a " self.year_released " si no especificamos un valor para " year_released " en nuestra funciòn llamada.

"Career Karma entrò en mi vida cuando más lo necesitaba y rápidamente me ayudò a tch con un bootcamp. ¬°Dos meses después de graduarme, encontré el trabajo de mis sue√±os que se alineaba con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Creemos un nuevo objeto Movie para probar nuestro còdigo:

Hemos especificado incorrectamente el a√±o en que se lanzò Happy Gilmore como 1995. Necesitamos cambiarlo usando change_year () método. Nuestro còdigo devuelve:

Nuestro còdigo se ejecutò correctamente. Probemos nuestro còdigo para ver qué sucede si el valor de " year_released " ya es igual al que especificamos en el change_year () método:

Nuestro còdigo devuelve:

Nuestro còdigo ejecuta la instrucciòn else en nuestro còdigo y luego nos dice que la pelìcula no ha sido cambiada.

Conclusiòn

El " NameError: name " self " no está definido " se genera un error cuando se olvida de especificar " self " como argumento posicional o cuando utilizas " self " en otro argumento en una lista de argumentos.

Este error se resuelve asegurándose de que todos los métodos de una funciòn que usan " self " incluir " self " en su lista de argumentos. Si eso no funciona, aseg√∫rese de que ning√∫n argumento en una lista de argumentos dependa de " self " para sus valores predeterminados.

¬°Ahora está listo para resolver este error de Python como un desarrollador profesional !