3.11.1 Tipi e membri

La funzione getmembers() recupera i membri di un oggetto come fossero appartenenti ad una classe o ad un modulo. Le undici funzioni il cui nome inizia con ``is'' vengono fornite principalmente come scelta conveniente per il secondo argomento di getmembers(). Aiutano anche a determinare quando ci si può aspettare di trovare i seguenti attributi speciali:

Tipo  Attributo  Descrizione  Note 
modulo __doc__ stringa di documentazione  
  __file__ nomefile (mancante per i moduli built-in)  
class __doc__ stringa di documentazione  
  __module__ nome del modulo in cui questa classe viene definita  
metodo __doc__ stringa di documentazione  
  __name__ nome con il quale questo metodo è definito  
  im_class oggetto classe richiesto per questo metodo (1)
  im_func oggetto funzione contenente l'implementazione del metodo  
  im_self istanza a cui questo metodo è legata, o None  
funzione __doc__ stringa di documentazione  
  __name__ nome con il quale questa funzione viene definita  
  func_code codice oggetto contenente il bytecode delle funzioni compilate  
  func_defaults tupla di ogni valore predefinito per gli argomenti  
  func_doc (stessa cosa di __doc__)  
  func_globals spazio dei nomi globali in cui viene definita questa funzione  
  func_name (stessa cosa di __name__)  
traceback tb_frame oggetto frame a questo livello  
  tb_lasti indice dell'ultima istruzione tentata, in bytecode  
  tb_lineno numero di linea corrente nel codice sorgente Python  
  tb_next prossimo oggetto con traceback più interno (chiamato da questo livello)  
frame f_back prossimo oggetto frame più esterno (questo è il frame chiamante)  
  f_builtins spazio dei nomi built-in visto da questo frame  
  f_code codice oggetto eseguito in questo frame  
  f_exc_traceback traceback, se sollevato in questo frame, altrimenti None  
  f_exc_type tipo di eccezione, se sollevata in questo frame, altrimenti None  
  f_exc_value valore dell'eccezione, se sollevata in questo frame, altrimenti None  
  f_globals spazio dei nomi globale visto da questo frame  
  f_lasti indice dell'ultima istruzione tentata, in bytecode  
  f_lineno numero della linea corrente nel codice sorgente Python  
  f_locals spazio dei nomi locali visto da questo frame  
  f_restricted 0 o 1 se il frame è in esecuzione in modalità ristretta  
  f_trace funzione tracciante per questo frame, altrimenti None  
code co_argcount numero degli argomenti (non inclusi gli argomenti * o ** )  
  co_code stringa o bytecode compilato grezzo  
  co_consts tupla delle costanti usate nel bytecode  
  co_filename nome del file in cui questo codice oggetto è stato creato  
  co_firstlineno numero della prima riga in codice sorgente Python  
  co_flags bitmap: 1=ottimizzato | 2=newlocals | 4=*arg | 8=**arg  
  co_lnotab mapping codificato dei numeri di riga negli indici del bytecode  
  co_name nome cui cui questo codice oggetto viene definito  
  co_names tupla dei nomi delle variabili locali  
  co_nlocals numero delle variabili locali  
  co_stacksize spazio dello stack richiesto nella virtual machine  
  co_varnames tupla dei nomi degli argomenti e delle variabili locali  
builtin __doc__ stringa di documentazione  
  __name__ nome originale di questa funzione o metodo  
  __self__ istanza a cui questo metodo è legata, altrimenti None  

Nota:

(1)
Modificato nella versione 2.2: im_class viene usato per riferirsi alla classe che definisce il metodo..

getmembers( object[, predicato])
Restituisce tutti i membri di un oggetto in una lista di coppie (nome, valore) ordinati per nome. Se l'argomento facoltativo predicato viene indicato, soltanto i membri per cui il predicato ritorna un valore vero vengono inclusi.

getmoduleinfo( percorso)
Restituisce una tupla di valori che descrivono come Python interpreterà il file indicato dal percorso se è un modulo, o None se non può venire identificato come modulo. La tupla restituita è (nome, suffisso, modo, mtype), dove nome è il nome del modulo senza il nome dei package che lo contengono, suffisso è la parte finale del nome del file (che potrebbe non essere una estensione con punto), modo è la modalità open() che potrebbe venire usata ('r' o 'rb'), e mtype è un intero che indica il tipo di modulo. mtype avrà un valore che può venire confrontato con le costanti definite nel modulo imp; verificate la documentazione di quel modulo per avere maggiori informazioni sui tipi del modulo stesso.

getmodulename( percorso)
Restituisce il nome del modulo nominato dal file percorso, non includendo i nomi dei package che lo contengono. Viene usato lo stesso algoritmo che l'interprete utilizza quando cerca i moduli. Se il nome non viene a corrispondere con le convenzioni dell'interprete, viene restituito None.

ismodule( oggetto)
Restituisce vero se l'oggetto è un modulo.

isclass( oggetto)
Restituisce vero se l'oggetto è una classe.

ismethod( oggetto)
Restituisce vero se l'oggetto è un metodo.

isfunction( oggetto)
Restituisce vero se l'oggetto è una funzione Python oppure una funzione senza nome (lambda).

istraceback( oggetto)
Restituisce vero se l'oggetto è una traceback.

isframe( oggetto)
Restituisce vero se l'oggetto è un frame.

iscode( oggetto)
Restituisce vero se l'oggetto è un codice.

isbuiltin( oggetto)
Restituisce vero se l'oggetto è una funzione built-in.

isroutine( oggetto)
Restituisce vero se l'oggetto è una funzione definita dall'utente o built-in oppure un metodo.

ismethoddescriptor( oggetto)
Restituisce vero se l'oggetto è un descrittore di metodo, ma non se ismethod() o isclass() oppure isfunction() restituiscono vero.

Questo metodo esiste dalla versione 2.2 di Python e, per esempio, restituisce vero con int.__add__. Un oggetto che supera questo test ha l'attributo __get__ ma non __set__; ma al di là di questo, è l'insieme degli attributi che varia. __name__ è di solito rilevante e __doc__ lo è spesso.

Metodi, implementati mediante descrittori, che superano altresì uno degli altri test, restituiscono falso con il test ismethoddescriptor(), semplicemente perché gli altri test offrono più garanzie - potete, ad esempio, contare sul fatto di avere l'attributo im_func (etc) quando un oggetto supera ismethod().

isdatadescriptor( oggetto)
Restituisce vero se l'oggetto è un descrittore di dati.

I descrittori di dati hanno sia un attributo __get__ che un attributo __set__. Esempi di descrittori di dati sono le proprietà (definite in Python), i getset ed i membri (definiti in C). Tipicamente, i descrittori di dati avranno anche gli attributi __name__ e __doc__ (le proprietà, i getset ed i membri hanno entrambi questi attributi), ma questo non viene garantito. Nuovo nella versione 2.3.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.