He visto un montón de ejemplos de personas que extraen todas las clases de un módulo, por lo general algo como:
# foo.py
class Foo:
pass
# test.py
import inspect
import foo
for name, obj in inspect.getmembers(foo):
if inspect.isclass(obj):
print obj
Impresionante.
Pero no puedo'encontrar la manera de obtener todas las clases de la current módulo.
# 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()
Probablemente sea algo muy obvio, pero no he sido capaz de encontrar nada. ¿Alguien me puede ayudar?
Prueba esto:
import sys
current_module = sys.modules[__name__]
En tu contexto:
import sys, inspect
def print_classes():
for name, obj in inspect.getmembers(sys.modules[__name__]):
if inspect.isclass(obj):
print(obj)
Y aún mejor:
clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)
Porque inspect.getmembers()
toma un predicado.