Erik Johnson wrote:
Steven Bethard <[EMAIL PROTECTED]> wrote:
py> class A:
... pass
...
py> class B:
... pass
...
py> a = A()
py> a.__class__ == A
True
py> a.__class__ == B
False
"Just" <[EMAIL PROTECTED]> 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. :(
Unfortunate but, given that this "introspection" is normally considered
to be a fairly advanced language feature, hardly surprising.
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?
Nope, it's a version thing. I believe Booleans were introduced at some
odd point like 2.2.1. Until then "True" and "False" were just names like
any other.
regards
Steve
--
Meet the Python developers and your c.l.py favorites March 23-25
Come to PyCon DC 2005 http://www.pycon.org/
Steve Holden http://www.holdenweb.com/
--
http://mail.python.org/mailman/listinfo/python-list