On Thu, Feb 25, 2016 at 3:54 AM, ast <nom...@invalid.com> wrote: > So we can conclude that inspect.isclass(x) is equivalent > to isinstance(x, type) > > lets have a look at the source code of isclass: > > def isclass(object): > """Return true if the object is a class. > > Class objects provide these attributes: > __doc__ documentation string > __module__ name of module in which this class was defined""" > return isinstance(object, type)
Except Python 2 old-style classes (i.e. 2.x classes that aren't a subclass of `object`) are not instances of `type`. Prior to new-style classes, only built-in types were instances of `type`. An old-style class is an instance of "classobj", and its instances have the "instance" type. >>> class A: pass ... >>> type(A) <type 'classobj'> >>> type(A()) <type 'instance'> Note that "classobj" and "instance" are instances of `type`. The `isclass` check in Python 2 has to instead check isinstance(object, (type, types.ClassType)). >>> types.ClassType <type 'classobj'> -- https://mail.python.org/mailman/listinfo/python-list