"NameError: name 'self' is not defined" in Creating class methods


#1

Bonjour, j'ai une erreur que je n'arrives pas à corriger, la console indique systématiquement ce message:

Traceback (most recent call last):
  File "python", line 13, in <module>
NameError: name 'self' is not defined

Et voici mon code:

class Voiture(object):
    condition = "nouveau"
    
    def __init__(self, modele, couleur, mpg):
        self.modele = modele
        self.couleur = couleur
        self.mpg   = mpg
        
    def afficher_voiture(self):
        return "Ceci est une %s %s avec %s MPG." %(self.couleur,self.modele,str(self.mpg))
       
ma_voiture = Voiture("DeLorean", "argent", 88)
print ma_voiture.afficher_voiture(self,modele,couleur,mpg)

Si vous pouvez m'aider merci bien !


#2

You don't need these information: self,modele,couleur,mpg
As you can see your method has only one parameter and that is self and you don't even need to provide this parameter yourself, but by calling the function on an object you already specify the object:

object.method

makes already sure that self is object

So all you need to do is:

print ma_voiture.afficher_voiture()

google translator:
Vous n'avez pas besoin de ces informations : auto , modele , couleur , mpg
Comme vous pouvez voir votre méthode n'a qu'un seul paramètre et ce qui est self et vous ne même pas besoin de fournir ce paramètre vous-même , mais en appelant la fonction sur un objet que vous spécifiez déjà l'objet :

object.method

fait déjà en sorte que self est object

Donc, tout ce que vous devez faire est de :

print ma_voiture.afficher_voiture ( )

#3

Thanks you for your answer, haxor789, i tried this:

print ma_voiture.afficher_voiture()

instead of this:

print ma_voiture.afficher_voiture(self,modele,couleur,mpg)

like you said and it's works !