Chapitre 29. Méthodes spéciales derrière les accesseurs
- Par Richard Gomez
Pages 609 à 625
Citer ce chapitre
- GOMEZ, Richard,
- Gomez, Richard.
- Gomez, R.
Citer ce chapitre
- Gomez, R.
- Gomez, Richard.
- GOMEZ, Richard,
Il existe trois sortes d’accès aux attributs :
lecture : « a.x » ;
écriture : « a.x = v » ;
effacement : « del a.x ».
Un attribut de a est un nom écrit en qualifiant le nom a, comme ci-dessous :
Dans les cas courants, si on oublie les slots et les descripteurs, tout se passe comme si le nom x était écrit dans l’espace de a et pointait vers un objet stocké en mémoire. On rappelle que l’espace des noms de a est un dictionnaire. C’est l’attribut dict de a qui pointe vers ce dictionnaire :
Dans la pratique, on n’accède jamais à a.x via a._ _dict_ _["x"]. Les lectures, écritures et effacement se font avec le point (syntaxe des noms qualifiés).
Les méthodes spéciales getattribute, getattr, setattr et delattr jouent un rôle fondamental dans les accès aux attributs.
Ces méthodes nous rappellent les fonctions internes hasattr, getattr, setattr et delattr :On rappelle que hasattr(a, "x") retourne True si a.x existe.
Avant d’étudier getattribute, getattr, setattr et delattr, nous faisons un rappel sur getattr, setattr et delattr.
Le code de getattr équivaut à ceci :
Ce script est abusif dans sa forme (on a écrit "x" dans la signature), mais il exprime vraiment ce qui se passe : sauf exception, l’appel getattr(a, "x") retourne a.x. Reste à savoir comment Python effectue le calcul « a.x ». C’est ce que nous verrons à la section suivante.
On note au passage que la signature complète de getattr est (object,name,default=None). Explication : si un obje…
Date de mise en ligne : 23/02/2023
Ce chapitre est en accès conditionnel
Acheter cet ouvrage
35,99 €
Acheter ce chapitre
5,00 €