Python soi

La valeur "self‚" n’est disponible que dans une méthode lorsqu’une fonction est appelée et spécifiée.

Vous ne pouvez pas accéder à "self‚" dans les arguments spécifiés à une méthode, ou à l’intérieur d’une fonction sans spécifier "self" comme argument. Sinon, vous voyez l’erreur "NameError: name ‚Äòself‚Äô n’est pas défini‚".

Dans ce guide, nous expliquons ce que signifie cette erreur et pourquoi elle est générée. Nous passons en revue quelques extraits de code pour vous aider à comprendre comment résoudre cette erreur dans votre code.

NameError : name ‚Äòself‚Äô n’est pas défini

Le "soi‚" La variable contient des informations sur un objet dans une class. Toutes les valeurs qui ont été affectées à un objet sont disponibles dans le "self" variable.

"self‚" doit être passé en argument si vous souhaitez l’utiliser dans une méthode. Le "soi" La variable ne peut pas être utilisée dans d’autres arguments d’une méthode car elle n’est accessible qu’à partir d’une méthode.

Vous rencontrez l’erreur "NameError : name ‚Äòself‚Äô n’est pas défini " erreur si vous :

  • Ne spécifiez pas "self‚" comme argument
  • Utilisez "self‚" comme argument dans un autre argument

Parcourons chacun de ces scénarios un par un.

Scénario #1 : "self‚" n’est pas répertorié comme argument

"self‚" doit être listé comme argument pour qu’il soit accessible dans une méthode. "auto" n’est pas une variable globale. C’est local à l’intérieur d’une classe.

81% des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Rédigez un programme contenant des informations sur les films dans une classe. Nous commençons par définir notre classe avec un constructeur qui contient des valeurs sur notre film :

Notre classe peut contenir deux valeurs : le nom d’un film et l’année o√π il a été publié. Ensuite, nous déclarons une méthode qui nous permet de modifier la valeur de "year_released‚" :

Pour tester notre code, nous créons un objet de notre classe. Cet objet représente le film Happy Gilmore, sorti en 1996 :

Nous avons appelé la méthode change_year() sur notre objet afin que nous puissions définir l’année de sortie du film à 1996. Exécutons notre code et voyons si cela fonctionne :

Notre code renvoie une erreur.

Cette erreur est générée car nous n’avons pas passé "self" comme argument à notre méthode. Nous corrigeons cette erreur en ajoutant "self" comme premier argument dans le Méthode change_year() :

Exécutez à nouveau notre code :

Notre code s’exécute avec succès !

Scénario 2 : Utiliser "self" comme argument dans un autre argument

"self" est évalué lorsqu’une fonction est appelée. Cela signifie que vous ne peut pas avoir d’argument faisant référence à "self" dans la liste des arguments spécifiés dans un appel de fonction.

Mettre à jour notre méthode "year_released" d pour que, si une année de sortie différente n’est pas spécifiée, un message s’affiche sur la console nous indiquant que l’année d’un film n’a pas été modifiée.

Nous pouvons le faire en définissant un argument par défaut dans notre code :

"year_released‚" a désormais la valeur par défaut "self.year_released‚". Cela signifie que si nous ne spécifions pas une valeur à laquelle l’année doit être modifiée, une valeur par défaut est définie. Si nous spécifions une valeur, la valeur que nous spécifions est utilisée à la place de la valeur par défaut.

Si la valeur que nous spécifions n’est pas égale à la valeur de "self.year_released‚", la valeur de "self.year_released" est changé. Sinon, un message est affiché sur la console indiquant à l’utilisateur que le film n’a pas été modifié.

Après l’évaluation de notre instruction if, la valeur de " year_released" est imprimé sur la console.

Exécutons notre code :

Notre code augmente une erreur. C’est parce que nous avons essayé d’utiliser "self" dans un autre argument de notre liste d’arguments.

Nous pouvons corriger cette erreur en définissant la valeur de la variable sur "self.year_released‚" dans notre fonction au lieu de dans notre liste d’arguments :

Dans ce code, nous définissons "year_released" pour être égal à "self.year_released" si nous ne spécifions pas de valeur pour "year_released" dans notre appel de fonction.

"Career Karma est entré dans ma vie quand j’en avais le plus besoin et m’a rapidement aidé à ma tch avec un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Créons un nouvel objet Movie pour tester notre code :

Nous avons incorrectement spécifié l’année de sortie de Happy Gilmore en 1995. Nous devons la modifier en utilisant change_year(). Notre code renvoie :

Notre code a été exécuté avec succès. Testons notre code pour voir ce qui se passe si la valeur de "year_released" est déjà égale à celle que nous spécifions dans le change_year() :

Notre code renvoie :

Notre code exécute l’instruction else dans notre code et nous dit ensuite que le film n’a pas été modifié.

Conclusion

La "NameError : nom ‚Äòself‚Äô n’est pas défini " une erreur est générée lorsque vous oubliez de spécifier "self" comme argument positionnel ou lorsque vous utilisez "self" dans un autre argument dans une liste d’arguments.

Vous résolvez cette erreur en vous assurant que toutes les méthodes d’une fonction qui utilisent "self‚" inclure "soi" dans leur liste d’arguments. Si cela ne fonctionne pas, assurez-vous qu’aucun argument dans une liste d’arguments ne dépend de "self" pour leurs valeurs par défaut.

Vous êtes maintenant prêt à résoudre cette erreur Python comme un développeur professionnel !