POO avec Python
Vidéos
-
Créer une première classe
👉 Comment créer et utiliser une première classe en faisant de la POO avec Python.
class Rectangle:
def __init__(self, l, h):
self.largeur = l
self.hauteur = h
def se_presenter(self):
print("Je suis un rectangle")
print("Ma largeur est", self.largeur)
print("Ma hauteur est", self.hauteur)
print("Ma surface est", self.surface())
def surface(self):
return self.largeur * self.hauteur
r1 = Rectangle(5, 3)
r1.se_presenter()
r2 = Rectangle(2, 6)
r2.se_presenter()
Afficher un objet avec __str__
👉 Comment afficher un objet avec la méthode magique __str__.
class Rectangle:
def __init__(self, l, h):
self.largeur = l
self.hauteur = h
def __str__(self):
return "Je suis un rectangle" + "\n" + \
"Ma largeur est " + str(self.largeur) + "\n" + \
"Ma hauteur est " + str(self.hauteur) + "\n" + \
"Ma surface est " + str(self.surface())
def surface(self):
return self.largeur * self.hauteur
r1 = Rectangle(5, 3)
print(r1)
r2 = Rectangle(2, 6)
print(r2)
Utiliser getter et setter avec des attributs d'un objet
👉 Comment concevoir des getter et des setters pour contrôler l'utilisation d'un attribut d'un objet.
class Rectangle:
def __init__(self, l, h):
self.largeur = 0
self.set_largeur(l)
self.hauteur = 0
self.set_hauteur(h)
def __str__(self):
return f"Rectangle de {self.largeur} x {self.hauteur}" + \
f" de surface {self.surface()}"
def surface(self):
return self.largeur * self.hauteur
def get_largeur(self):
return self.largeur
def set_largeur(self, l):
if l >= 0:
self.largeur = l
def get_hauteur(self):
return self.hauteur
def set_hauteur(self, h):
if h >= 0:
self.hauteur = h
r = Rectangle(5, 3)
print(r.get_largeur(), r.get_hauteur(), r.surface())
r.set_hauteur(-30)
print(r)
Cacher des attributs avec la visibilité privée
👉 Comment utiliser la visibilité privée pour cacher des attributs.
class Rectangle:
def __init__(self, l, h):
self.__largeur = 0
self.set_largeur(l)
self.__hauteur = 0
self.set_hauteur(h)
def __str__(self):
return f"Rectangle de {self.__largeur} x {self.__hauteur}" + \
f" de surface {self.surface()}"
def surface(self):
return self.__largeur * self.__hauteur
def get_largeur(self):
return self.__largeur
def set_largeur(self, l):
if l >= 0:
self.__largeur = l
def get_hauteur(self):
return self.__hauteur
def set_hauteur(self, h):
if h >= 0:
self.__hauteur = h
r = Rectangle(5, 3)
r.set_hauteur(-30)
print("Hauteur =", r.get_hauteur())
print(r)
r.set_hauteur(10)
print("Hauteur =", r.get_hauteur())
print(r)
Créer des propriétés avec le décorateur @property
👉 Comment transformer des attributs en propriétés pour contrôler leur utilisation.
class Rectangle:
def __init__(self, l, h):
self.__largeur = 0
self.largeur = l
self.__hauteur = 0
self.hauteur = h
def __str__(self):
return f"Rectangle de {self.__largeur} x {self.__hauteur}" + \
f" de surface {self.surface}"
@property
def surface(self):
return self.__largeur * self.__hauteur
@property
def largeur(self):
return self.__largeur
@largeur.setter
def largeur(self, l):
if l >= 0:
self.__largeur = l
@property
def hauteur(self):
return self.__hauteur
@hauteur.setter
def hauteur(self, h):
if h >= 0:
self.__hauteur = h
r = Rectangle(5, 3)
r.hauteur = -30
print("Hauteur =", r.hauteur)
print(r)
r.hauteur = 10
print("Hauteur =", r.hauteur)
print("Surface =", r.surface)
print(r)
Qu'est-ce que l'encapsulation
👉 Qu'est-ce que l'encapsulation ? Comment la mettre en œuvre en faisant de la POO avec Python ?
Ressources