Gibt es eine Möglichkeit, alle Klassen von einem Python-Modul in eine Liste von namenlosen Objekten zu initialisieren?Initialisieren Sie alle Klassen in einem Modul in namenlose Objekte in einer Liste
Beispiel Ich habe ein Modul rules
, die alle untergeordneten Klassen aus einer Klasse-Regel enthält. Dieser Grund, ich bin sicher, sie werden alle ein Verfahren run()
implementieren und werden ein Attribut name
haben, die während des Gesprächs von __init__
ich eine Liste von Objekten aus diesen Klassen dynamisch initiiert haben möchte generiert werden. Mit dynamisch initialisiert bedeutet das, dass sie nicht explizit benannt werden müssen.
Die Fragen sind:
Ist es möglich, durch alle Klassen in einem Modul zu wiederholen?
Kann ein namenloses Objekt initiiert werden?
Besser als meine Antwort. Sie können 'inspect.isclass()' verwenden, um 'TypeError' zu vermeiden. –
@AntonisChristofides True, Sie können 'inspect.isclass()' als Filter verwenden. Ich versuche jedoch zu vermeiden, irgendetwas aus dem "inspect" -Modul im Produktionscode zu verwenden. –
Sie können auch 'isinstance (value, type)' verwenden, um sicherzustellen, dass Sie eine Klasse haben. (Sie müssen auch nach 'types.ClassType' suchen, wenn Sie Klassen im alten Stil unterstützen müssen, aber ich würde diese stattdessen einfach meiden.) – Blckknght