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.

122<br />

Éléments du langage<br />

DEUXIÈME PARTIE<br />

Les new-style class, présentées dans la prochaine section, introduisent cependant une<br />

nouvelle méthode __getattribute__(), qui comme __setattr__() permet de surcharger<br />

complètement l’accès aux attributs.<br />

__delattr__()<br />

Complément des deux méthodes précédentes, objet.__delattr__('attribut') est<br />

équivalent à del objet.attribut.<br />

Essais sur les attributs de mapping<br />

>>> class Person:<br />

... def __getattr__(self, name):<br />

... print('getattr %s' % name)<br />

... if name in self.__dict__:<br />

... return self.__dict__[name]<br />

... else:<br />

... print("attribut '%s' inexistant" % name)<br />

... def __setattr__(self, name, valeur):<br />

... print('set %s: %s' % (name, str(valeur)))<br />

... self.__dict__[name] = valeur<br />

... def __delattr__(self, name):<br />

... print('del %s' % name)<br />

... if name in self.__dict__:<br />

... del self.__dict__[name]<br />

... else:<br />

... print("attribut '%s' inexistant" % name)<br />

...<br />

>>> john = Person()<br />

>>> john.age = 20<br />

set age: 20<br />

>>> john.first_name<br />

getattr first_name<br />

attribut 'first_name' inexistant<br />

>>> john.first_name = 'John'<br />

set first_name: John<br />

>>> del john.first_name<br />

del first_name<br />

>>> john.first_name<br />

getattr first_name<br />

attribut 'first_name' inexistant<br />

Utilisation de l’objet comme conteneur<br />

Les mappings et les séquences sont tous des objets de type conteneurs, qui implémentent<br />

un tronc commun de méthodes. Ces méthodes sont présentées ci-dessous et<br />

peuvent être définies dans toute classe.

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

Saved successfully!

Ooh no, something went wrong!