[Python] Introspezione - Ottenere implicitamente una variabile della classe parent

Enrico Franchi enrico.franchi a gmail.com
Lun 14 Mar 2011 11:55:10 CET


Giorgio Zoppi wrote:
> Supponente che abbia un oggetto X di cui non so niente. Voglio
> scoprire un metodo e la sua firma, si puoo fare?

Ni. La "firma" la puoi ottenere "a mano" maneggiando direttamente il 
chiamabile.

Ovvero... con i metodi mostrati trovi i metodi dell'oggetto. Questi 
metodi sono a loro volta oggetti. E come tali li puoi maneggiare (tutto 
e' un oggetto).

Oppure meglio ancora puoi utilizzare il modulo inspect per sapere il 
*numero* dei parametri (ed eventualmente cose tipo keyword parameters 
etc etc.)

Il problema *generico* di "scrivere un programma che dato un oggetto di 
cui non sa nulla lo sappia usare" non e' qualcosa che un linguaggio di 
programmazione possa risolvere. Perche' il programma non conosce la 
semantica dell'oggetto (e non capisce l'inglese delle docstring e 
mannaggia a lui se lo sapesse saremmo tutti disoccupati!).

Puoi entro certi limiti fare un sistema che faccia "qualcosa"; vedi il 
concetto di "pubblicare un servizio" + qualche informazione semantica 
sul servizio. Pero' e' un'infrastruttura (nemmeno troppo pesante) che 
puoi e devi aggiungere tu.

Comunque in generale se vuoi solo informazioni su un metodo tu "umano" 
dentro una REPL a botte di inspect cavi tutto il cavabile. Anche se, una 
lettura della docstring o del codice sono probabilmente piu' rapide ed 
istruttive.



-- 
.
..: -enrico-



Maggiori informazioni sulla lista Python