Generelles Vorgehen beim Programmieren
-
- User
- Beiträge: 22
- Registriert: Dienstag 13. August 2019, 14:38
sorry muss noch mal fragen.. wie genau muss die from_dict() aussehen? Könnt Ihr mir den code mal bitte vorschreiben? Ich steh völlig auf dem Schlauch..
Du bekommst ein Wörterbuch und übergibst die Werte an die Klasse. Im einfachsten Fall so:
Du hast aber nicht den einfachsten Fall, denn die Auflösung von Teamname nach Team muß auch noch in `from_dict` stattfinden:
Code: Alles auswählen
class Player:
def __init__(self, first_name, last_name, team, games_won=0, games_lost=0, ...):
....
@classmethod
def from_dict(cls, entry):
return cls(**entry)
Code: Alles auswählen
@classmethod
def from_dict(cls, entry, teams):
entry = dict(entry)
team_name = entry.pop('team_name')
return cls(team=teams[team_name], **entry)
-
- User
- Beiträge: 22
- Registriert: Dienstag 13. August 2019, 14:38
danke.. ich glaub ich versteh nicht wie genau das dict aussieht, weches ich speichere und lade. So wie ich es verstehe habe ich ein Dict mit nur einem Key "players" und als wert wiederum ein Dict, mit den keys first_name. last_name etc und den dazugehörigen Werten.
Visuell mal so dargestellt:
Woran ich die ganze Zeit knabber.. so könnte man ja nur einen Player speichern, weil ja in einem Dict nicht 2x der gleiche Key vorhanden sein darf. Also kann es ja keinen 2. Key first_name, last_name etc geben, um die Daten weiterer Spieler zu speichern.
Wo ist denn mein Denkfehler?
Visuell mal so dargestellt:
Code: Alles auswählen
"players": "first_name": "Peter",
"last_name": "Schmidt"
"team": "BC Buxtehude"
usw.
Wo ist denn mein Denkfehler?
-
- User
- Beiträge: 22
- Registriert: Dienstag 13. August 2019, 14:38
meinst du das?
data = {
"players": [player.to_dict() for player in self._players.values()]
}
wie sehen denn die Inhalte der ListComprehensive aus? Wahrscheinlich nicht so wie ich es oben dargestellt habe?!
data = {
"players": [player.to_dict() for player in self._players.values()]
}
wie sehen denn die Inhalte der ListComprehensive aus? Wahrscheinlich nicht so wie ich es oben dargestellt habe?!
- __blackjack__
- User
- Beiträge: 14012
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich hatte die Player-JSON-Objekte in ein JSON-Array gesteckt, weil der Name sonst ja redundant gespeichert würde.
Wie ein einzelner Player da aussieht bestimmt die `to_dict()`-Methode von `Player`, denn die wird ja für jedes Element in der „list comprehension“ (LC) aufgerufen.
Ansonsten kann man ja auch einfach mal in die gespeicherte JSON-Datei rein schauen wenn man sich das nicht vorstellen kann.
Wie ein einzelner Player da aussieht bestimmt die `to_dict()`-Methode von `Player`, denn die wird ja für jedes Element in der „list comprehension“ (LC) aufgerufen.
Ansonsten kann man ja auch einfach mal in die gespeicherte JSON-Datei rein schauen wenn man sich das nicht vorstellen kann.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
-
- User
- Beiträge: 22
- Registriert: Dienstag 13. August 2019, 14:38
Ja das ist richtig mir fehlt die Praxis.. bin nur gerade dabei meinen fertigen Anfänger code umzuschreiben. Schwer da was laufbares zu haben. Wollte erstmal die Klassen sauber haben bevor ich die GUI Klassen 3x ändern muss. Ich bau mir heut Abend mal ne Testumgebung auf und schau mir es mal in Detail am. Danke erstmal für die Infos
-
- User
- Beiträge: 22
- Registriert: Dienstag 13. August 2019, 14:38
nur mal kurz Rückmeldung.. wenn man sieht was rauskommt, ist dann doch alles klarer. Danke nochmal an alle!