[Python-de] Klassen rekursiv in einem Modul instantiieren
Florian Diesch
diesch at spamfence.net
Di Okt 9 17:38:14 EDT 2018
Am 2018-10-09 22:29, schrieb Philipp Kraus:
> In der algorithm.py ist eine Basis Klasse implementiert, die die
> Klasse in foo.py ableitet, somit ist jede Klasse unterhalb von
> algorithm immer von der Klasse Algorithm in algorithm.py abgelietet.
> Ich möchte jetzt in der __main__.py einmal rekursiv über alle *.py
> Dateien in algorithm durch gehen und aus jeder *.py Datei die Klasse
> instantiieren
>
> Ich brauche so etwas
>
> l = []
> for i in getAllKlasse_in_algorithm():
> if i instaceof Algorithm
> l.append(i())
Ich würde das über eine Metaklasse machen, die die Klassen in einer
Liste sammelt:
algo_list = []
class AlgoMeta(type):
def __init__(cls, name, bases, adict):
type.__init__(cls, name, bases, dict)
algo_list.append(cls)
class Algorithm(metaclass=AlgoMeta):
pass
class A(Algorithm):
pass
class B(A):
pass
class C(Algorithm):
pass
print(algo_list)
Mehr Informationen über die Mailingliste python-de