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

Luca Bacchi bacchilu a gmail.com
Mar 25 Giu 2013 09:55:41 CEST


Anche se Python ti consente di farlo... Il fatto che tu debba fare una cosa
così "insolita" dovrebbe far suonare un campanellino.

Potresti implementare un "factory" (cerca factory method su google) che, ti
restituisce l'istanza della classe o None, se necessario.

Ancora meglio la tua potrebbe essere una situazione in cui puoi
implementare un NullObject Design Pattern. Anche qui cerca su Google per
chiarimenti.

Ciao :-)

L


Il giorno 25 giugno 2013 09:41, Marco Giusti <marco.giusti a gmail.com> ha
scritto:

> 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.
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130625/5594a312/attachment.html>


Maggiori informazioni sulla lista Python