How can I get a list of all classes within current module in Python?

inspect, python, reflection

Solution

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.

Problem

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?

Original source