Seite 1 von 1
Re: Class variables
Verfasst: Donnerstag 30. Januar 2014, 17:07
von Krischu
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.
Re: Class variables
Verfasst: Donnerstag 30. Januar 2014, 17:15
von EyDu
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.
Re: Class variables
Verfasst: Donnerstag 30. Januar 2014, 17:43
von kbr
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.
Re: Class variables
Verfasst: Donnerstag 30. Januar 2014, 18:52
von Sirius3
@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.