Bonjour,

lorsqu'on écrit une fonction f dans une classe A, l'appel a.f où a est une instance de A revient à écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
d = A.__dict__["f"]
d.__get__(a,A)
Jusque là je comprends. Si je poursuis, comme type(d) possède le descripteur "__get__", lorsqu'on écrit d.__get__, cela revient à écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
e = type(d).__dict__["__get__"]
e.__get__(d,type(d))
Maintenant, lorsqu'on écrit e.__get__, cela revient à écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
f = type(e).__dict__["__get__"]
f.__get__(e,type(e))
En poursuivant de la même manière pour f.__get__, etc. je constate que le processus finit par s'arrêter et qu'on obtient toujours le même type d'objet (method-wrapper '__get__' of wrapper_descriptor object). Je ne sais pas ce qu'est un wrapper_descriptor, mais tout cela est bien obscur pour moi. Par avance merci pour votre aide.