Easy Q: dealing with object type

Erik Johnson spam at nospam.org
Thu Feb 3 13:29:57 EST 2005



>  Steven Bethard <steven.bethard at gmail.com> wrote:
> > py> class A:
> > ...     pass
> > ...
> > py> class B:
> > ...     pass
> > ...
> > py> a = A()
> > py> a.__class__ == A
> > True
> > py> a.__class__ == B
> > False

 "Just" <just at xs4all.nl> wrote
> Uh, isinstance(a, A) works for both new-style and old-style classes.
> Heck, isinstance() even works in Python 1.5.2...

    Oh, there! Not that there is anything wrong with new classes, but that
is just the sort of thing that I expected to find. No, neither of these is
bad at all. I was looking for something like the obj.__class__ attribute,
but I couldn't see it under dir(obj). So, why is _class__ magically tucked
away where you can't see it? That doesn't seem very "Pythonic".

    I also looked in my two python books for instance(), or instanceof()
functions - wasn't seeing anything. Actually, now that I check the indices
of  "Learning Python" 1E & "Programming Python" 2E, I don't see isinstance()
either.  How unfortunate. :(

    As an aside, I notice a lot of other people's interpreters actually
print 'True' or 'False' where my system prints 0 or 1. Is that a
configuration that can easily set somewhere?

Thanks for your help!

-ej






More information about the Python-list mailing list