Et je trouve cela tres moche, d'ailleurs je me demande pourquoi ne pas tout simplement avoir 2 mots: def pour définir les methodes (sans le self) et fun pour définir les fonctions..
Parce qu'en Python, une méthode c'est simplement une fonction qui a été ajoutée comme attribut d'une classe ou d'un objet.
Par exemple si j'ai une classe Carre:
class Carre(object):
def __init__(self, cote):
self.cote = cote
Je peux définir une fonction aire_carre pour calculer l'aire d'un carré :
def aire_carre(carre):
return carre.cote ** 2
print aire_carre(Carre(5)) # affiche 25
Et il suffit d'attacher cette fonction à la classe Carre pour en faire une méthode :
[^] # Re: Pourquoi tous ces self ?
Posté par Antoine . En réponse à la dépêche Sortie de Python 2.4. Évalué à 6.
Parce qu'en Python, une méthode c'est simplement une fonction qui a été ajoutée comme attribut d'une classe ou d'un objet.
Par exemple si j'ai une classe Carre:
class Carre(object):
def __init__(self, cote):
self.cote = cote
Je peux définir une fonction aire_carre pour calculer l'aire d'un carré :
def aire_carre(carre):
return carre.cote ** 2
print aire_carre(Carre(5)) # affiche 25
Et il suffit d'attacher cette fonction à la classe Carre pour en faire une méthode :
Carre.aire = aire_carre
print Carre(6).aire() # affiche 36