17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

112<br />

Éléments du langage<br />

DEUXIÈME PARTIE<br />

Espace de noms<br />

Pour atteindre la variable color de l’instance car_1, il faut spécifier qu’elle se trouve<br />

dans car_1 pour la distinguer par exemple, d’une éventuelle variable portant le même<br />

nom définie en dehors de la classe. Cette différenciation se fait par le biais de l’espace<br />

de noms, ou namespace, que l’interpréteur crée lorsque l’instance de classe est utilisée.<br />

Cet espace de noms peut être vu comme un dictionnaire propre à cette instance de<br />

classe. Il porte les correspondances entre noms d’attributs et valeurs de ces attributs.<br />

Ainsi, la notation car_1.color est utilisée par l’interpréteur pour atteindre l’attribut<br />

color de l’instance car_1.<br />

Pour rechercher color dans car_1, le mapping procède dans cet ordre :<br />

Recherche si car_1.__dict__['color'] existe.<br />

Recherche si type(car_1).__dict__['color'] existe (équivalent à<br />

Car.__dict__['color']).<br />

Si l’attribut en question n’existe pas et s’il est utilisé dans le cadre d’une attribution de<br />

valeur, le mécanisme de mapping ajoute aussitôt l’objet fourni dans la liste des attributs<br />

de l’instance liste conservée dans le mapping __dict__. Les autres instances ne<br />

profitent pas de ce nouvel attribut, sauf s’il est attribué à la classe même.<br />

Mapping d’attributs<br />

>>> class Car:<br />

... color = 'Rouge'<br />

...<br />

>>> red_car = Car()<br />

>>> blue_car = Car()<br />

>>> red_car.color<br />

'Rouge'<br />

>>> blue_car.color<br />

'Rouge'<br />

>>> blue_car.color = 'Bleu'<br />

>>> red_car.color<br />

'Rouge'<br />

>>> blue_car.color<br />

'Bleu'<br />

>>> red_car.air_conditioner = 'oui'<br />

>>> red_car.air_conditioner<br />

'oui'<br />

>>> blue_car.air_conditioner<br />

Traceback (most recent call last):<br />

File "", line 1, in ?<br />

AttributeError: Car instance has no attribute 'air_conditioner'

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!