[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