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

Daniele Varrazzo piro a develer.com
Mar 25 Giu 2013 13:42:40 CEST


On Mon, 2013-06-24 at 16:00 +0200, Simone Federici wrote:
> 2013/6/24 Antonio Cavallo <a.cavallo a cavallinux.eu>
> 
> > class A(object):
> >         def __new__(cls):
> >                 if cond:
> >                         return A
> >                 else:
> >                         return None
> >
> 
> brutto brutto brutto brutto

Bruttissimissimissimo.

Non perdere tempo dietro a quest'idea: un costruttore che restituisce
None è una violazione criminale del Principio di Minima Sorpresa.

Scrivi un factory method, che potrebbe essere una funzione a sè ma anche
un metodo della classe stessa:

        class A:
            def __init__(self, args):
                if not cond(args):
                    raise ValueError
                ...
        
            @classmethod
            def new_or_none(cls, args):
                try:
                    return cls(args)
                except ValueError:
                    return None
        
        a = A.new_or_none(...)


-- 
Daniele



Maggiori informazioni sulla lista Python