Class variables

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
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

BlackJack hat geschrieben:@Krischu: In der Tat, denn was sollte eine Methode die explizit zum Initialisieren des übergebenen Objekts vorgesehen ist schon zurückgeben, und an wen?

*Warum* würdest Du denn dort etwas anderes zurück geben wollen und was? Wenn ich raten müsste ist das etwas was man mit Klassenmethoden löst (`classmethod()`).
Das wichtigste an der Klasse ist eigentlich die Tatsache, daß sie ein Array erzeugt,in dem sich Daten befinden, die aus einem File eingelesen wurden. Eigentlich könnte die Klasse von Array abgeleitet sein. Dann sollte das Objekt das Array zurückgeben, nachdem es initialisiert wurde.
--
Grüße
Christoph
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Krischu hat geschrieben:Dann sollte das Objekt das Array zurückgeben, nachdem es initialisiert wurde.
Und wohin sollte es zurückgegeben werden? Wenn __init__ aufgerufen wird, dann existiert das Objekt schon.
Das Leben ist wie ein Tennisball.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Krischu hat geschrieben:Eigentlich könnte die Klasse von Array abgeleitet sein. Dann sollte das Objekt das Array zurückgeben, nachdem es initialisiert wurde.
Sei Array eine Liste, dann kannst Du dies z.B. so erreichen:

Code: Alles auswählen

class Array(list):
    def __init__(self, filename):
        super(Array, self).__init__()
        # read from file ...
        
a = Array(filename)
Es spricht auch nichts dagegen die Liste als Attribut von Array (has a) zu führen. Das würde ich zumeist auch empfehlen, denn das direkte Ableiten von Python-Datenstrukturen kann tückisch sein, da Du dann ggf. auch auf das korrekte Überladen der 'special methods' zu achten hast.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Krischu: da »__init__« eindeutig die innere Struktur des Objekts verändert, widerspricht es auch dem OOP-Prinzip, Zuständigkeiten zu trennen, wenn »__init__« auch noch etwas zurückgeben würde.
Antworten