When to use None

Michael Hudson mwh21 at cam.ac.uk
Sat Feb 5 08:05:45 EST 2000


neelk at brick.cswv.com (Neel Krishnaswami) writes:

> Michael Hudson <mwh21 at cam.ac.uk> wrote:
> > Bernhard Herzog <herzog at online.de> writes:
> > >
> > > >>> class C:
> > > ..     def __cmp__(self, other):
> > > ..             return cmp(None, other) 
> > > .. 
> > > >>> c = C()
> > > >>> c == None
> > > 1
> > > >>> c is None
> > > 0
> > 
> > Yikes! That's impressively devious.
> > 
> > I-always-*knew*-there-was-a-reason-I-always-use-"is"-ly y'rs
> 
> Is it devious?
> 
> I always assumed that a __cmp__ method that returned true for a
> comparsion with None would have a good reason for doing so, and as a
> result I've always tested that with 'obj == None'.

I guess the point is that I can't think of a good reason for an object
to masquerade as None.

I generally use None to mean exactly that; a void, nothing (like nulls
in SQL, I guess).

I suppose there are times when None is an allowable value, and then
something that's a bit like None is more reasonable (to me, anyway).

Cheers,
Michael



More information about the Python-list mailing list