Seite 1 von 1

iterieren innerhalb(!) einer Klasse

Verfasst: Montag 22. Januar 2018, 12:00
von hans_wurst
Ich verwende die Sprache Python 2.7.
Um eine Klasse zu schreiben, welche iterierbar ist, gibt es ja viele
Beispiele im Netz. So wie hier:
https://www.programiz.com/python-programming/iterator

Ich möchte jedoch eine Klasse um zwei Methoden erweitern, welche beide
innerhalb der Klasse zu iterieren verwendet werden können. Für diesen
Fall finde ich allerdings nirgends eine Beschreibung. Kann mir jemand
einen Link schicken oder mir einen Tipp geben?

Meinen Code habe ich mir also so ähnlich forgestellt:

Code: Alles auswählen

class Myclass():
    def iterMeth1(self):
        ....

    def iterMeths(self):
        ....

    def normalMeth(self):
        for x in iterMeth1():
            print x
        for x in iterMeth2():
            print x


bla = MyClass()
bla.normalMeth()

Re: iterieren innerhalb(!) einer Klasse

Verfasst: Montag 22. Januar 2018, 12:45
von noisefloor
Hallo,

... und willkommen im Forum :-)

Ich verstehe deine Frage nicht... Wenn eine Klasse iterierbar sein soll, dann muss sie das Iterartor-Protokoll implementieren. Das ist ja auch auf der Seite, die du genannt hast, (sehr kurz) erwähnt. Benötigt wird so was in erster Linie, wenn deine Klasse einen Datentypen in irgendeiner Form darstellen soll, der iterierbar sein soll.

Die von dir gezeigte Classe hat das aber nicht bzw. es ist nicht zu sehen. Was du als "normale" Methoden einer Klasse implementierst ist was anders. Wenn du bei iterMeth1 und iterMeth2 etwas iterierbares zurück lieferst, dann funktioniert das auch so wie du das hast.

Was ist denn das Ziel der Sache? Aktuell ist das alles sehr abstrakt...

Methodennamen schreibst man übrigens per Konvertion klein_mit_unterstrich, also iter_meth1, iter_meth2, crystal_meth, ...
Und dann Methodennamen sollte das Beschreiben, was die Methode macht. Wenn du ein Zähler im Namen hast, hast du ziemlich sicher auch einen suboptimalen Namen.

Gruß, noisefloor