How to define what a class is ?

ast nomail at
Thu Feb 25 04:54:08 EST 2016

"Ian Kelly" <ian.g.kelly at> a écrit dans le message de 
news:mailman.85.1456303651.20994.python-list at
> On Wed, Feb 24, 2016 at 1:08 AM, ast <nomail at> wrote:

> All metaclasses are subclasses of type, so all classes are instances of type.

Ah ! I didn't know that if an object Obj is an instance of Myclass and
MyClass inherit from MyClass2, then Ojb is an instance of MyClass2 too

>>> from enum import Enum, EnumMeta
>>> isinstance(Enum, EnumMeta)
>>> isinstance(EnumMeta, type)
>>> isinstance(Enum, type)

that's correct

>> Suppose I provide to you an object and that I
>> ask to you to tell me if it is a class or not. How
>> would you proceed ?
> import inspect
> inspect.isclass(x)

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)


More information about the Python-list mailing list