Le vocabulaire
| Classe | le plan |
| Objet / instance | une réalisation |
| Attribut | une caractéristique |
| Méthode | une action |
Classe → majuscule : Personne, Equipement.
Recto-verso. À relire la veille. Le cours · Les exercices
| Classe | le plan |
| Objet / instance | une réalisation |
| Attribut | une caractéristique |
| Méthode | une action |
Classe → majuscule : Personne, Equipement.
class Voiture:
nombre = 0 # de CLASSE
def __init__(self, marque):
self.marque = marque # d'INSTANCE
def rouler(self):
print(self.marque)selfIl se déclare dans chaque méthode, mais ne se passe jamais à l'appel.
def afficher(self): # déclaré
v.afficher() # PAS passéOublié → takes 0 positional arguments but 1 was given
__init__ | à la création |
__del__ | à la destruction |
__del__, et non __def__.
nom | public |
_nom | protégé (interne) |
__nom | privé |
Une convention, pas une serrure : __nom devient
_Classe__nom (name mangling).
def get_age(self):
return self.__age
def set_age(self, a):
if a >= 0:
self.__age = a
else:
print("Âge invalide")Le setter contrôle — sinon il ne sert à rien.
@property@property
def age(self):
return self.__age
@age.setter
def age(self, v):
if v >= 0:
self.__age = v
p.age = 35 # appelle le setter
print(p.age) # appelle le getterLa forme moderne : syntaxe d'attribut, contrôle de méthode.
class Serveur(Equipement):
def __init__(self, ip, os):
super().__init__(ip)
self.os = osLa fille reçoit attributs et méthodes de la mère.
super().__init__()Dès que la fille a son propre __init__, il remplace celui de la
mère.
Sans l'appel, les attributs de la mère n'existent pas →
AttributeError: '_Classe__x'
super().__init__(…)class Admin(Utilisateur):
def se_connecter(self):
super().se_connecter() # le comportement mère
print("+ privilèges") # puis le sienMême nom de méthode = redéfinition.
takes 0 arguments but 1 | self oublié |
no attribute '_Classe__x' | super().__init__()
oublié |
no attribute '__x' | privé lu de l'extérieur |
Qui peut modifier cette donnée, et sous quelles conditions ?
« N'importe qui, n'importe comment » → attribut privé + setter qui contrôle.
Et une classe passe par ses propres getters, pas par l'attribut brut.