[Tutor] FW: isinstance -> instance

Kent Johnson kent37 at tds.net
Mon Feb 26 23:26:34 CET 2007


Bernard Lebel wrote:
> That's fine, but that tells me that 'a' is an instance of 'A'.
> It doesn't, however, tell me if 'a' is an instance or the actual class object.

I'm not sure what you are trying to do.

In [1]: class A: pass
    ...:
In [2]: a=A()
In [3]: isinstance(a, A)
Out[3]: True
In [4]: isinstance(A, A)
Out[4]: False

The actual class object is not an instance of itself.

 >>>> So I'm a bit at a loss here. I don't want to know if the instanceis
 >>>> an instance of a specific class, I just want to know if it's an
 >>>> instance.

*Everything* in Python is an instance of *some* class. int, str, classes 
themselves, modules, etc. Everything is an instance of something.

The specific <type 'instance'> is the type of instances of old-style 
classes. There is some funny business going on that I don't fully 
understand but AFAIK instances of old-style classes are in some sense 
all instances of this <type 'instance'>.

If you are trying to test whether an object is an instance of an 
old-style class you can do it like this (though I can't imagine why you 
would want to):

In [10]: class C:
    ....:      pass
    ....:
In [11]: c=C()
In [12]: isinstance(c, type(a))
Out[12]: True

Or you can import types and check against types.InstanceType:

In [13]: import types
In [14]: dir(types)
In [15]: isinstance(c, types.InstanceType)
Out[15]: True

Kent


More information about the Tutor mailing list