Incompréhension méthode __get__
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:
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:
1 2
| e = type(d).__dict__["__get__"]
e.__get__(d,type(d)) |
Maintenant, lorsqu'on écrit e.__get__, cela revient à écrire :
Code:
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.