Daniel Nogradi wrote: > Thanks, this looks pretty good. However there is some wierdness with > isclass: whenever a class has a __getattr__ method an instance of it > will be detected by isclass as a class (although it is not). > > >>> from inspect import isclass > >>> > >>> class x: > ... def __getattr__( self, attr ): > ... pass > ... > >>> y = x( ) > >>> isclass( y ) > True
Which reinforces Michael Spencer's instinct that the inspect.isclass() implementation is a bit too clever (see http://mail.python.org/pipermail/python-list/2006-July/351448.html). > If there is no __getattr__ method isclass works as expected. Am I > misunderstanding something here or isclass should return False for any > instance of any class including those with a __getattr__ method? It certainly should, and I believe that the obvious test isinstance(obj, (types.ClassType, type)) will work. Peter -- http://mail.python.org/mailman/listinfo/python-list