I have a python module that defines a number of classes:
class A(object):
def __call__(self):
print "ran a"
class B(object):
def __call__(self):
print "ran b"
class C(object):
def __call__(self):
print "ran c"
From within the module, how might I add an attribute that gives me all of the classes?
dir() gives me the names of everything from within my module, but I can't seem to figure out how to go from the name of a class to the class itself from within the module.
From outside of the module, I can simply use getattr(mod, 'A')
, but I don't have a self
kind of module from within the module itself.
This seems pretty obvious. Can someone tell me what I'm missing?
import sys
getattr(sys.modules[__name__], 'A')
You can smash this into one for statement, but that'd have messy code duplication.
import sys
import types
this_module = sys.modules[__name__]
[x for x in
[getattr(this_module, x) for x in dir(this_module)]
if type(x) == types.ClassType]
classes = [x for x in globals().values() if isinstance(x, type)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With