[Python] Ritornare un oggetto None quando dichiaro una classe...

Marco Giusti marco.giusti a gmail.com
Mar 25 Giu 2013 09:41:56 CEST


On Mon, Jun 24, 2013 at 09:01:00PM +0200, Gollum1 wrote:
> Il 24 giugno 2013 18:51, Marco Giusti <marco.giusti a gmail.com> ha scritto:
> > On Mon, Jun 24, 2013 at 06:30:52PM +0200, Gollum1 wrote:
> >> Ho provato a guardare un po' di documentazione, oltre a quelle
> >> espresse qui in lista, anche in altri luoghi gli sviluppatori non sono
> >> troppo propensi a questa soluzione...
> >>
> >> probabilmente la soluzione del raise è quella sintaticamente più corretta...
> >>
> >> ora però devo capire come funziona la cosa, alcuni script fatti per il
> >> 2.x con il 3.x non funzionano correttamente... e la documentazione per
> >> la 3.x non riesco a capirla...
> >>
> >> leggendo la documentazione mi pare di capire che il numero e il
> >> messaggio dell'eccezione viene registrata in args, quindi il fatto che
> >> io abbia usato args come parametro di chiamata della classe, potrebbe
> >> essere un errore... devo quindi considerare args come una parola
> >> chiave del linguaggio e non usarla per altre cose?
> >
> > no, args non è una parola chiave del linguaggio e puoi usarla nei limiti
> > di correttezza come nome di variabile. se posti un esempio di codice
> > forse capiamo meglio e possiamo aiutarti meglio.
> 
> Oddio... o sto rincoglionendo ora... o ero strafatto alcuni giorni fa...
> 
> stavo cercando la documentazione tra Python2 e Python3... ed ero
> arrivato al punto che lo script falliva nella forma in cui era scritto
> l'exception quando dovevo creare una directory...
> 
> e quindi ho dovuto modificare il blocco try - exception...
> 
> il bello è che ora mi sono messo a ricercare i vari documenti che
> avevo letto al tempo (qualche giorno fa)... e non ne trovo uno...
> 
> c'era un documento in http://docs.python.org/3/ che diceva
> esplicitamente che l'exception metteva il codice di errore dell'errore
> e il relativo messaggio come primi due parametri, ed opzionalmente (in
> relazione a quale era l'errore sollevato) poteva esserci un terzo
> parametro (il nome del file)... e tutti questi venivano restituiti
> nella variabile args... da qui il fatto che io pensassi che args fosse
> diventata una parola chiave...

Quando parli di keyword parli di qualcosa di specifico. Tanto per essere
chiari:

	>>> as = "ciao"
	  File "<stdin>", line 1
		as = "ciao"
		 ^
	SyntaxError: invalid syntax
	>>> args = "ciao"
	>>> 

ma hai in qualche maniera ragione quando dici che gli argomenti passati
al costruttore di una eccezione vengono salvati in args:

	>>> try:
	...  raise RuntimeError("non", "hai", "detto", "la", "parola", "magica")
	... except Exception as e:
	...  print(*e.args)
	... 
	non hai detto la parola magica
	>>> 

Args è un attributo dell'eccezione e niente di vieta di usare comunque
una variabile di nome args. Il documento a cui fai riferimento
probabilmente è questo[1].

[1] http://docs.python.org/3/library/exceptions.html#BaseException.args

ciao
m.


Maggiori informazioni sulla lista Python