Sites


Initiation à python

Ajouter des attributs

A quoi sert de créer des classes si elles ne contiennent rien ? à priori à rien. La première tâche fréquente dans la définition des classes est souvent la définition de variables, comme pour toute autre structure. On appellera alors la variable "attribut" car elle devient une propriété liée en propre à l'objet et n'existe que dans son contexte.

class MaClasse :
     essai = "ok"

Notez au passage l'indentation car la classe agit comme un bloc d'instruction structuré. Il faudra donc être vigilant à ce niveau.
Essayons maintenant de l'instancier.

objet = MaClasse()
print objet.essai

affiche 

ok

Remarquez lors de l'instanciation, des parenthèses sont ajoutées au nom de la classe et aussi que pour faire référence à une propriété, il faut que :

  • celle-ci soit définie dans la classe
  • l'objet qui la concerne soit instancié
  • la rattacher à l'instance en plaçant un point entre les deux.

pour vérifier le type il est toujours possible d'utiliser la méthode type :

type(MaClasse)
<type 'classobj'>

Ainsi, l'attribut essai se retrouve associé à l'instance et il peut y avoir autant d'attributs du même type qu'il y a d'instances :

class MaClasse :
       essai = "ok"

objet = MaClasse()
print objet.essai
> ok

objet2 = MaClasse()
print objet2.essai
> ok

objet2.essai = "wow"
print objet2.essai,  objet.essai
> wow ok
Note : nous utiliserons régulièrement le signe > en début de ligne pour montrer ce que l'interpréteur renvoie. Cette pratique est inverse à l'interpréteur python mais nous permet, nous l'espérons, de rendre plus claire les lignes de codes qui nous intéressent.

On voit bien dans cet exemple que la valeur de l'attribut a pu être modifié dans le bloc principal avec une simple affectation et que pourtant, l'affectation ayant été effectuée dans le contexte d'une instance, seule la valeur associée à l'attribut de cette instance a été réellement affectée, l'autre instance n'ayant pas été modifiée le moins du monde.
 

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.