17.2 Bastion -- Limitare l'accesso agli oggetti

Modificato nella versione 2.3: Disabled module.

La documentazione è stata lasciata per aiutare nella lettura di vecchio codice che utilizza questo modulo.

Come da dizionario, un bastione (NdT: bastion) è ``un'area o una posizione fortificata'' oppure ``qualcosa che viene considerato una fortezza''. È un nome adatto per questo modulo, che fornisce un modo per proibire l'accesso ad alcuni attributi di un oggetto. Deve essere sempre utilizzato assieme al modulo rexec, in modo da permettere ai programmi che operano in modalità limitata di accedere ad alcuni attributi sicuri di un oggetto, mentre si impedisce l'accesso ad altri attributi non sicuri.

Bastion( object[, filter[, name[, class]]])
Protegge l'oggetto object, restituendo un bastione per l'oggetto. Ogni tentativo di accedere ad uno degli attributi dell'oggetto dovrà venire approvato dalla funzione filter; se l'accesso è vietato verrà sollevata un'eccezione AttributeError.

Se presente, filter deve essere una funzione che accetta una stringa contenente il nome di un attributo e restituisce vero se è consentito l'accesso a quest'ultimo; se filter restituisce falso, l'accesso viene proibito. Il filtro predefinito nega l'accesso a tutte le funzioni che iniziano con il carattere di di trattino basso ("_"). La stringa di rappresentazione di bastion sarà "<Bastion for name>" se viene fornito il valore di name; altrimenti verrà utilizzato "repr(object)".

class, se presente, dovrebbe essere una sotto classe di BastionClass; vedete il codice in bastion.py per i dettagli. Solo raramente sarà necessaria una sovrascrittura della classe BastionClass.

class BastionClass( getfunc, name)
Classe che implementa realmente gli oggetti bastion. Questa è la classe predefinita utilizzata da Bastion(). Il parametro getfunc è una funzione che quando viene chiamata con il nome di un attributo come unico argomento restituisce il valore dell'attributo da esporre all'ambiente di esecuzione limitata. name viene utilizzato per realizzare il metodo repr() dell'istanza della classe BastionClass.

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