Vous êtes sur la page 1sur 2

// On cree nos premieres classes, nos premiers attributs et nos premieres methodes

+ mecanisme de la POO.
// A ne pas oublier : le
docstring !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

methodes et attributs (variables contenues dans un objet) definis dans une classe.
L'Oriente Objet plus qu'utile dans la modelisation.

Pour definir une classe, on utilise le mot cle 'class'. Pour definir les attributs,
on definit d'abord le constructeur de la classe qui permet de creer des objets en
l'appelant (__init__(self, attribut1, attribut2, ...)). ==>
NomClasse(val_attribut1, val_attribut2, ...)
Les getters et setters n'ont pas lieu d'etre en Python.

---> Attribut de classe : cree en dehors du constructeur

---> Les methodes : permettent de faire des actions sur l'objet.


Le parametre 'self' : est aussi un parametre des methodes (fonctions) d'objet.
---> Methodes de classe et methodes statiques :
- Methodes de classe : ne travaillent pas sur self mais sur la classe meme et prend
comme premier parametre : 'cls'. On utilise la synthaxe suivante pour dire a Python
que la methode definie est une methode de classe : // methodeDeClasse =
classmethod(methodeDeClasse).
- Methodes statiques : ne prennent pas de premier parametre (ni 'self' ni 'cls').
Pour faire connaitre a Python que la methode est statique, on utilise la synthaxe :
methodeStatique = staticmethod(methodeStatique)

// methodes speciales ont pour synthaxe : __nomMethode__().

---> Introspection :
- La fonction dir : prend en parametre un objet et retourne la liste de ses
attributs et methodes.
- L'attribut special __dict__ : c'est un dico qui contient comme cles les noms des
attributs et comme valeurs les valeurs de ces attributs.

***********************************************************************************
**********
*********************************** Deinition des classes
***********************************
***********************************************************************************
**********
1) L'encapsulation :
principe pour cacher ou proteger des donnees de notre objet. Ainsi on utilise des
getters et setters pour acceder a ces donnees.
/* Utile pour rendre un attribut non modifiable, ou mettre a jour un attribut des
qu'un autre est modifie. */
On cree des proprietes pour les attributs dont on attend une action particuliere.

2) Les proprietes a la casserole :


En Python, il n'y a pas de (private, ...) tout est public => attribut modifiable
depuis l'exterieur.

3) Les proprietes en action :


Une propriete se cree dans le corps de la classe "property()" qui prend 4
parametres :
# On utilise en pratique les deux premiers
- methode donnant acces a l'attribut
- methode modifiant l'attribut
- methode pour supprimer l'attribut
- methode si une demande d'aide est effectuee sur l'attribut
> On cree d'abord un attribut "self._<attribut>" au lieu de "self.<attribut>"
> On definie une premiere methode _get_<attribut>() et une deuxieme
_set_<attribut>(<valeur_de_modification>).
> Enfin on utilise la methode property() en disant que l'attribut (sans le "_")
doit etre une propriete :
attribut = property(_get_<attribut>, _set_<attribut>).