inspect.getmembers(object[, typecheck])
Premier de la conclusion
foo.py
class foo1:
'''something code'''
class foo2:
'''something code'''
class foo3:
'''something code'''
get_class
import foo
import inspect
classes = map(lambda x:x[0],inspect.getmembers(foo,inspect.isclass))
print classes
# => ['foo1','foo2','foo3']
ʻInspect.getmembers (object) obtient tous les membres de l'objet enregistrés dans ʻobject
.
Le format est [(membre1, type), (membre2, type), ....].
ʻInspect.is - détermine si l'objet correspond à
--`
Il semble qu'il y ait 16 classes, modules, fonctions, méthode .....
Pour plus d'informations, cliquez ici (http://docs.python.jp/2/library/inspect.html "inspect").
Par conséquent, ʻinspect.getmembers (foo, inspect.isclass) `aurait dû être comme ça.
get_class
print inspect.getmembers(foo,inspect.isclass)
# => [('foo1',<class foo.foo1 at 0x*******>),('foo1',<class foo.foo2 at 0x*******>),('foo3',<class foo.foo3 at 0x*******>)]
Après cela, il vous suffit d'extraire le 0e élément de chaque élément.
map(lambda x:x[0], list)
C'est tout.
Puisque le premier élément est la classe elle-même, l'objet de classe lui-même peut également être obtenu. Par exemple, supposons que vous recherchez une clé pour une partie du nom de classe pour obtenir un objet de classe correspondant.
getclass
import foo
import inspect
classes = inspect.getmembers(foo,inspect.isclass)
for i in classes:
if '2' in i[0]:
something2 = i[1]
something2class = something2()
print something2class.__class__.__name__
# => foo2
Cependant, dans ce cas, vous obtiendrez probablement une erreur si vous ne la trouvez pas.
Recommended Posts