How can I get a list of all classes within current module in Python?
Question: I've seen plenty of examples of people extracting all of the classes from a
module, usually something like:

    
    
    # foo.py
    class Foo:
        pass
    
    # test.py
    import inspect
    import foo
    
    for name, obj in inspect.getmembers(foo):
        if inspect.isclass(obj):
            print obj
    

Awesome.

But I can't find out how to get all of the classes from the _current_ module.

    
    
    # foo.py
    import inspect
    
    class Foo:
        pass
    
    def print_classes():
        for name, obj in inspect.getmembers(???): # what do I do here?
            if inspect.isclass(obj):
                print obj
    
    # test.py
    import foo
    
    foo.print_classes()
    

This is probably something really obvious, but I haven't been able to find
anything. Can anyone help me out?


Answer: Try this:

    
    
    import sys
    current_module = sys.modules[__name__]
    

In your context:

    
    
    import sys, inspect
    def print_classes():
        for name, obj in inspect.getmembers(sys.modules[__name__]):
            if inspect.isclass(obj):
                print(obj)
    

And even better:

    
    
    clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)
    

Because `inspect.getmembers()` takes a predicate.

