On 07/24/2018 01:07 PM, Chris Angelico wrote:
On Wed, Jul 25, 2018 at 5:33 AM, Tobiah <t...@tobiah.org> wrote:
Consider:

         >>> type({}) is dict
         True
         >>> type(3) is int
         True
         >>> type(None) is None
         False

Obvious I guess, since the type object is not None.
So what would I compare type(None) to?

         >>> type(None)
         <type 'NoneType'>
         >>> type(None) is NoneType
         Traceback (most recent call last):
           File "<stdin>", line 1, in <module>
         NameError: name 'NoneType' is not defined


I know I ask whether:

         >>> thing is None

but I wanted a generic test.
I'm trying to get away from things like:

         >>> type(thing) is type(None)

because of something I read somewhere preferring
my original test method.

There is nothing more generic in a type test than in simply saying "is
None". There are no other instances of NoneType. Don't try
type-checking None; just check if the object is None.

ChrisA


I suppose one valid usage would be this sort of thing:

fn = {
    int: dispatchInt,
    str: dispatchStr,
    list: dispatchList,
    type(None): dispatchNone
}[type(x)]
fn(x)

--
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to