Question about None

Steven D'Aprano steve at REMOVETHIS.cybersource.com.au
Sat Jun 13 08:29:34 CEST 2009


Paul LaFollette wrote:

> 3) (this is purely philosophical but I am curious)  Would it not be
> more intuitive if
> isinstance(None, <anything at all>) returned true?

Good grief no!!!

None is an object. It has a type, NoneType. It's *not* a string, or a float,
or an int, or a list, so why would you want isinstance() to *lie* and say
that it is?


Python is good for testing these sorts of ideas:

>>> _isinstance = isinstance
>>> def isinstance(obj, type):
...     if obj is None: return True
...     return _isinstance(obj, type)
...
>>> x = "parrot"
>>> if isinstance(x, str):
...     print x.upper() 
...
PARROT
>>> x = None
>>> if isinstance(x, str): print x.upper()
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'upper'




-- 
Steven




More information about the Python-list mailing list