Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5270

Re: Klassen rekursiv in einem Modul instantiieren

From Peter Otten <__peter__@web.de>
Newsgroups de.comp.lang.python
Subject Re: Klassen rekursiv in einem Modul instantiieren
Date 2018-10-10 00:08 +0200
Organization None
Message-ID <ppj8td$qjg$1@gioia.aioe.org> (permalink)
References <c3736ae4-6baa-4147-9e97-4ef6a6b243ba@googlegroups.com>

Show all headers | View raw


Philipp Kraus wrote:

> Ich brauche so etwas
> 
> l = []
> for i in getAllKlasse_in_algorithm():
>       if i instaceof Algorithm
>          l.append(i())
> 
> Wie komme ich an alle Klasse dran. Später sollen noch weitere Submodule /
> Klassen hinzu kommen und ich möchte im Grunde in der __main__.py eine
> generische Routine haben, die einfach alles einlist

Nachdem alle Sub-Module importiert sind, kannst du __subclasses__() rekursiv 
aufrufen (bei entsprechender Klassenhierarchie sind Dopplungen möglich).

>>> class A: pass
... 
>>> class B(A): pass
... 
>>> class C(B): pass
... 
>>> A.__subclasses__()
[<class '__main__.B'>]
>>> B.__subclasses__()
[<class '__main__.C'>]
>>> def subclasses(cls):
...     yield cls
...     for c in cls.__subclasses__():
...         yield from subclasses(c)
... 
>>> list(subclasses(A))
[<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>]

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Klassen rekursiv in einem Modul instantiieren Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-10-09 13:29 -0700
  Re: [Python-de] Klassen rekursiv in einem Modul instantiieren Florian Diesch <diesch@spamfence.net> - 2018-10-09 23:38 +0200
  Re: Klassen rekursiv in einem Modul instantiieren Peter Otten <__peter__@web.de> - 2018-10-10 00:08 +0200
    Re: Klassen rekursiv in einem Modul instantiieren Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-10-09 22:21 -0700
      Re: Klassen rekursiv in einem Modul instantiieren Peter Otten <__peter__@web.de> - 2018-10-10 10:32 +0200
  Re: [Python-de] Klassen rekursiv in einem Modul instantiieren Hartmut Goebel <h.goebel@goebel-consult.de> - 2018-10-10 09:29 +0200
    Re: [Python-de] Klassen rekursiv in einem Modul instantiieren Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-10-10 09:51 -0700

csiph-web