Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:tutorial_oop3 [2025-05-25 08:47] – [Statische Methoden] hof | talit:tutorial_oop3 [2025-05-26 14:11] (aktuell) – [Aufgabe F] hof | ||
---|---|---|---|
Zeile 307: | Zeile 307: | ||
Wie sieht die `ConsoleLearner.learn` Methode jetzt aus? | Wie sieht die `ConsoleLearner.learn` Methode jetzt aus? | ||
- | |||
## Speichern & Lesen | ## Speichern & Lesen | ||
Wir möchten `VocabularyUnits` in eine Datei speichern und von dort wieder lesen können. Es bietet sich an, eine Unit als JSON-Objekt zu speichern. JSON (JavaScript Object Notation) sind Dictionaries, | Wir möchten `VocabularyUnits` in eine Datei speichern und von dort wieder lesen können. Es bietet sich an, eine Unit als JSON-Objekt zu speichern. JSON (JavaScript Object Notation) sind Dictionaries, | ||
Zeile 315: | Zeile 314: | ||
</ | </ | ||
+ | Eine ganze Unit wäre dann eine Liste solcher Objekte: | ||
+ | |||
+ | <code python> | ||
+ | [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | </ | ||
### Aufgabe E: JSON-Serialisierung | ### Aufgabe E: JSON-Serialisierung | ||
Zeile 325: | Zeile 344: | ||
import json | import json | ||
with open(filename, | with open(filename, | ||
- | json.dump(json_list, | + | json.dump(json_list, |
</ | </ | ||
+ | |||
+ | |||
### Statische Methoden | ### Statische Methoden | ||
Fürs Einlesen kommt die umgekehrte `json.load` Funktion zum Einsatz. Allerdings haben wir noch ein kleines Problem: Eine VocabularyUnit existiert ja noch gar nicht, wenn wir sie einlesen wollen aus der Datei. Wir benötigen also eine Funktion, die nicht an eine bestimmte Unit gebunden ist. Diese werden mit `@staticmethod` annotiert und haben keinen `self` Parameter. Statische Funktionen werden direkt über den Klassennamen aufgerufen. | Fürs Einlesen kommt die umgekehrte `json.load` Funktion zum Einsatz. Allerdings haben wir noch ein kleines Problem: Eine VocabularyUnit existiert ja noch gar nicht, wenn wir sie einlesen wollen aus der Datei. Wir benötigen also eine Funktion, die nicht an eine bestimmte Unit gebunden ist. Diese werden mit `@staticmethod` annotiert und haben keinen `self` Parameter. Statische Funktionen werden direkt über den Klassennamen aufgerufen. | ||
Zeile 354: | Zeile 375: | ||
return VocabularyUnit(pairs) | return VocabularyUnit(pairs) | ||
</ | </ | ||
- | |||
### Aufgabe F | ### Aufgabe F | ||
Füge statische Methoden zu `VocabularyUnit` und `WordPair` hinzu, um die gespeicherten Daten wieder einlesen zu können. | Füge statische Methoden zu `VocabularyUnit` und `WordPair` hinzu, um die gespeicherten Daten wieder einlesen zu können. | ||
Zeile 374: | Zeile 394: | ||
</ | </ | ||
+ | |||
+ | ### Aufgabe G - Webapp | ||
+ | S. auch [[talit: |