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
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?
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)
inspect.getmembers() takes a predicate.
g = globals().copy() for name, obj in g.iteritems():