inspect.getmembers(object[, typecheck])
Zunächst aus der Schlussfolgerung
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)
ruft alle Mitglieder des Objekts ab, die in object
registriert sind.
Das Format ist [(Mitglied1, Typ), (Mitglied2, Typ), ....].
inspect.is -
bestimmt, ob das Objekt mit --
übereinstimmt
Es scheint, dass es 16 Klassen, Module, Funktionen, Methoden gibt .....
Weitere Informationen finden Sie hier (http://docs.python.jp/2/library/inspect.html "inspect").
Daher sollte "inspect.getmembers (foo, inspect.isclass)" so gewesen sein.
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*******>)]
Danach müssen Sie nur noch das 0. Element jedes Elements extrahieren.
map(lambda x:x[0], list)
Das ist es.
Da das erste Element die Klasse selbst ist, kann auch das Klassenobjekt selbst erhalten werden. Angenommen, Sie suchen nach einem Teil des Klassennamens, um ein passendes Klassenobjekt zu erhalten.
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
In diesem Fall wird jedoch wahrscheinlich ein Fehler angezeigt, wenn Sie ihn nicht finden.