[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