Re: OOP Anfängerfrage
Verfasst: Donnerstag 4. Juli 2013, 21:25
Die erste Methode meiner Tabellen-Klasse ist nun geschrieben und funktioniert auch soweit.
Ich könnte jetzt so weitermachen, der Rest der Methoden wäre schnell geschrieben. Ich wollte es aber hier dennoch nochmal zeigen, es geht mir vor allem um die Verwendung der "zeiger" Variable in der Klasse - ob man das so machen kann (klar kann man, funktioniert ja
)Es geht mir aber darum ob das einigermaßen "Klassenlike" ist, oder ob ich damit gegen grundsätzliche Konventionen in Klassen verstoße (die mir dann später Probleme bereiten könnten).
Der Sinn der "gebe_naechsten_Datensatz" -Methode ist den nächsten Datensatz zurückzugeben, damit dieser bearbeitet oder ausgegeben werden kann. Zurückgegeben werden sollen aber nur Datensätze bei denen in Spalte 13 ein "x" steht - später soll bei Datensätzen die Beisielsweise ein bestimmtes (Such)Wort nicht enthalten das "x" duch "n" ersetzt werden, damit diese Datensätze nicht zurückgegeben werden.
self.zeiger zeigt immer auf den aktuellen Datensatz
self.maxzeiger ist die höchstmögliche zeigerposition (maxzeiger ändert sich natülich wenn Datensätze angefügt oder gelöscht werden, darum arbeite ich da in der Methode nicht mit len(tabelle).
Es geht mir nicht darum wie man diese Methode kürzer schreiben kann, bin ja fast sicher dass hier einige das in einem Zweizeiler hinbekommen
, das will ich mir aber selbst erarbeiten und nicht stupide kopieren. Es geht nur ums Grundsätzliche: Die "zeiger" Variable und ob man so in Klassen arbeitet.
Thomas
Ich könnte jetzt so weitermachen, der Rest der Methoden wäre schnell geschrieben. Ich wollte es aber hier dennoch nochmal zeigen, es geht mir vor allem um die Verwendung der "zeiger" Variable in der Klasse - ob man das so machen kann (klar kann man, funktioniert ja
Der Sinn der "gebe_naechsten_Datensatz" -Methode ist den nächsten Datensatz zurückzugeben, damit dieser bearbeitet oder ausgegeben werden kann. Zurückgegeben werden sollen aber nur Datensätze bei denen in Spalte 13 ein "x" steht - später soll bei Datensätzen die Beisielsweise ein bestimmtes (Such)Wort nicht enthalten das "x" duch "n" ersetzt werden, damit diese Datensätze nicht zurückgegeben werden.
self.zeiger zeigt immer auf den aktuellen Datensatz
self.maxzeiger ist die höchstmögliche zeigerposition (maxzeiger ändert sich natülich wenn Datensätze angefügt oder gelöscht werden, darum arbeite ich da in der Methode nicht mit len(tabelle).
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf - 8 *-
import pickle
class Tabelle():
def __init__ (self, tabelle):
self.tabelle = tabelle
self.zeiger = -1
self.maxzeiger = len(self.tabelle)
def gebe_naechsten_Datensatz(self):
if self.zeiger == self.maxzeiger:
return self.tabelle[self.zeiger][:]
self.zeiger +=1
if self.tabelle[self.zeiger][13] != "x":
gebe_naechsten_Datensatz()
else:
return self.tabelle[self.zeiger][:]
def gebe_vorherigen_Datensatz(self):
pass
# Hauptprogramm
# lade Tabelle
dateiname = "videos.dmp"
with open(dateiname, "rb") as inhalt:
tabelle = pickle.load(inhalt)
# erzeuge eine Instanz der Klasse Tabelle
tabelle = Tabelle(tabelle)
a = True
while a:
satz = tabelle.gebe_naechsten_Datensatz()
print (satz[0]+satz[13]) # Test-Ausgabe zu Kontrollzwecken
if input ("Weiter ?") != "":
a = False
Thomas