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


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

Re: Klassen rekursiv in einem Modul instantiieren

Newsgroups de.comp.lang.python
Date 2018-10-09 22:21 -0700
References <c3736ae4-6baa-4147-9e97-4ef6a6b243ba@googlegroups.com> <ppj8td$qjg$1@gioia.aioe.org>
Message-ID <d545a2c2-a336-4805-882c-ba4279968f32@googlegroups.com> (permalink)
Subject Re: Klassen rekursiv in einem Modul instantiieren
From Philipp Kraus <philipp.kraus.flashpixx@gmail.com>

Show all headers | View raw


Danke für die 2 hilfreichen Antworten.

Ich habe aktuell in meiner algorithm.py eine Klasse

class Algorithm(object) :
 ....

und dann entsprechend in allen anderen *.py

class MyAlgo(Algorithm):
...

meine Frage ist, wie importiere ich "alles", ich habe es mit __all__ in der __init__.py  probiert, ich möchte in meiner __main__.py am liebsten from mymodule.algorithm import * sagen können und dann einmal über alle iterieren können.

Ich scheitere aktuell an dem "Gesamtimport

Phil

Am Mittwoch, 10. Oktober 2018 00:08:49 UTC+2 schrieb Peter Otten:
> 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