iterieren innerhalb(!) einer Klasse

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hans_wurst
User
Beiträge: 1
Registriert: Montag 22. Januar 2018, 11:55

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()
Benutzeravatar
noisefloor
User
Beiträge: 4187
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten