Introspection

John Lehmann jlehmann at nsw.bigpond.net.au
Mon Feb 28 14:25:01 CET 2000


These two functions might help you to play with classes:

  isinstance (object, class) 
  issubclass (class1, class2) 

There is also a __class__ attribute

>>> class A:
>>> 	pass
>>> a = A()
>>> isinstance(a, A)
1
>>> hasattr(a, '__class__')
1
>>> hasattr(6, '__class__')
0

Chuck Esterbrook wrote:
> 
> If I want a handle/pointer to an instance's class, how do I do that?
> 
> In Objective-C I can say:
>     [someObject class]
> 
> Which in Python would be:
>     someObject.class()
> 
> However, Python doesn't have a well-defined root class with such utility methods. Also, I also don't see anything useful from:
>     dir(someObject)
> 
> Also, I notice the following oddity: I can use the __name__ attribute to get the name of a class, but if I say "dir(someClass)", I get attributes like __doc__ and __module__, but no __name__.  How does Python get the __name__ then?
> 
> >>> class Foo:
> ...     pass
> ...
> >>> Foo.__name__
> 'Foo'
> >>> dir(Foo)
> ['__doc__', '__module__']
> >>>
> 
> -Chuck



More information about the Python-list mailing list