Seite 1 von 1

Re: Klassen-Instanz mit Hilfe von Variable erstellen

Verfasst: Freitag 15. Mai 2015, 22:59
von Sirius3
@fpmr: ist das jetzt ein Name oder ein Dateiname? Irgendwie sind sich da Kommentar und Attributname nicht einig. Ein Default-Wert eines Funktionsarguments, das einen Fehler produziert, macht keinen Sinn. Wenn das Argument zwingend ist, darf es keinen Default-Wert haben. Der attributespath ist auch kein Pfad sondern ein Dateiname. Dateien mit with zu öffnen, wurde Dir schon gesagt. Es ist unüblich in Python, Zeilen mit readline zu lesen, da eine for-Schleife einfacher, vielseitiger und verständlicher ist. Die Klammern bei if sind immer noch überflüssig. Statt replace nimmt man üblicherweise rstrip. Du wolltest ursprünglich alles in eine Liste packen und zurückgeben:

Code: Alles auswählen

def fetch_data(attributes_filename):
    with open(attributes_filename) as attributes:
        return [Slide(*map(str.rstrip, slide)) for slide in zip(*[attributes] * 4)]

Re: Klassen-Instanz mit Hilfe von Variable erstellen

Verfasst: Samstag 16. Mai 2015, 06:17
von mutetella
fpmr hat geschrieben:Ich glaube ich habe den Zweck von Klassen noch nicht ganz geschnallt, ich dachte ich könnte mit davon erstellten Instanzen direkt arbeiten.....
Um Daten zu transportieren (übergeben) muss man diese nicht unbedingt in eine Klasse stecken. In Deinem Fall eignet sich eine Klasse aber zum Beispiel, um das zu realisieren, was BlackJack schon angesprochen hat:

Code: Alles auswählen

class Slide(object):
    def __init__(self, filename, start, stop):
        self.filename = filename
        self.start = start
        self.stop = stop
        self._duration = None

    @property
    def duration(self):
        return self.stop - self.start

Code: Alles auswählen

>>> s = Slide('my_file', 12, 13)
>>> s.duration
1
Und am Beispiel von Sirius3 siehst Du auch, dass Du vielleicht die Form, wie Du Deine Daten vorliegen hast, überdenken solltest... ;-)

mutetella