Seite 1 von 2

Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 15:57
von Bill987654321
Hallo,

habe gerade begonnen die Attribute der Klasse Konto zu definieren:

Code: Alles auswählen

if __name__ == "__main__":
    main()

class Konto:
    def__init__(self, item, platzvorher, name, spieleanz, spielegew, spieleremis, spieleverl, plustore, minustore, punkte):
        self.Item = item
        self.Platzvorher = platzvorher
        self.Name = name
        self.Spieleanz = spieleanz
        self.Spielegew = spielegew
        self.Spieleremis = spieleremis
        self.Spieleverl = spieleverl
        self.Plustore = plustore
        self.Minustore = minustore
        self.Tordiff = tordiff
        self.Punkte = punkte
Ist die Platzierung nach main() richtig?
Muss hier das Attribut Tordifferenz definiert werden, also self.Tordiff = tordiff oder nicht definiert werden, weil die
Tordiff ausgerechnet werden kann, nämlich plustore - minustore?
Warum erscheint hinter "......., punkte):" nach "run" "invalid Syntax"? Der Doppelpunkt ist vorhanden und die nächste Zeile eingerückt.
Ist sonst alles korrekt? Wenn nein - Was muss ich ändern?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 16:17
von einfachTobi
Da fehlt ein Leerzeichen zwischen `def` und `__init__`.
Die Tordifferenz solltest du tatsächlich einfach berechnen aus `Plustore - Minustore`. Auch Instanzattribute werden klein geschrieben.

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 16:30
von Bill987654321
Habe den Code geändert. Er läuft jetzt ohne Fehlermeldung durch.

Code: Alles auswählen

if __name__ == "__main__":
    main()

class Konto:
    def __init__(self, item, platzvorher, name, spieleanz, spielegew, spieleremis, spieleverl, plustore, minustore, punkte):
        self.item = item
        self.platzvorher = platzvorher
        self.name = name
        self.spieleanz = spieleanz
        self.spielegew = spielegew
        self.spieleremis = spieleremis
        self.spieleverl = spieleverl
        self.plustore = plustore
        self.minustore = minustore
        self.punkte = punkte
Ist jetzt alles richtig, auch die Anordnung nach "main()"?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 17:12
von bwbg
Wenn du dein Programm ausprobiertes, wüsstest du die Antwort.

Spoiler: Du kannst es (das Modul) importieren, aber nicht direkt ausführen.

In der Regel packe ich das so genannte "main-Idiom" (Kombination aus main-Funktion und if __name__ == '__main__' ans Ende des ausführbaren Moduls.

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 17:30
von Bill987654321
Ich habe mein Programm ausprobiert, weiß die Antwort aber trotzdem nicht. :)

Wenn ich dich richtig verstehe, soll alles ab "class Konto" in ein Modul, das dann imporiert wird.? Falls ja - Soll ich den Teil ausschneiden und als eigenes Programm anlegen? Außerdem soll das "main-Idiom" an das Ende dieses Moduls, oder?

Welchen Namen soll das Modul bekommen? Konto?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 18:04
von __deets__
Der __main__-Guard kommt immer ganz ans Ende. Denn wenn der ausgefuehrt wird, dann laeuft ggf. Code, fuer den noch nicht alle Abhaengigkeiten vorhanden sind. Wie in deinem Fall zB Klassen. Es ist also genau umgekehrt, dass muss ans Ende. Auch hier wieder BASIC vs den Rest: in BASIC geht es mit der ersten Zeile los. In eigentlich allen anderen (Hoch-)Sprachen muss erstmal alles bekannt sein, bevor es benutzt werden kann.

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 18:12
von Bill987654321
Ist der __main__-Guard jetzt richtig plaziert?

Code: Alles auswählen

MANNSCHAFTSANZAHL = 4
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt"

def mannschaftsnamen_eingeben(anzahl):
    namen = []
    for i in range(1, anzahl + 1):
        namen.append(input(f"Gebe den Namen der {i}. Mannschaft ein: "))
    namen.sort()
    return namen

def mannschaftsnamen_speichern(namen, dateiname):
    with open(dateiname, "w", encoding="utf-8") as datei:
        for name in namen:
            datei.write(f"{name}\n")

def mannschaftsnamen_laden(dateiname):
    namen = []
    with open(dateiname, encoding="utf-8") as lines:
        for line in lines:
            namen.append(line.rstrip())
    return namen

def print_numbered_items(items):
    for i, item in enumerate(items, 1):
        print(f"{i}. {item}")

def main():
    print("Eingabe")
    mannschaftsnamen = mannschaftsnamen_eingeben(MANNSCHAFTSANZAHL)
    print_numbered_items(mannschaftsnamen)

    print("Speichern")
    mannschaftsnamen_speichern(mannschaftsnamen, MANNSCHAFTSNAMEN_DATEINAME)

    print("Laden")
    mannschaftsnamen = mannschaftsnamen_laden(MANNSCHAFTSNAMEN_DATEINAME)
    print_numbered_items(mannschaftsnamen)


class Konto:
    def __init__(self, item, platzvorher, name, spieleanz, spielegew, spieleremis, spieleverl, plustore, minustore, punkte):
        self.item = item
        self.platzvorher = platzvorher
        self.name = name
        self.spieleanz = spieleanz
        self.spielegew = spielegew
        self.spieleremis = spieleremis
        self.spieleverl = spieleverl
        self.plustore = plustore
        self.minustore = minustore
        self.punkte = punkte

if __name__ == "__main__":
    main()
Muss der Abschnitt "class Konto" in ein Modul gepackt werden, das dann imporiert wird? Falls ja - Soll ich den Teil ausschneiden und als eigenes Programm anlegen?
Falls ja - Welchen Namen soll das Modul bekommen? Konto?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 18:55
von Sirius3
Nein, die Klasse muß nicht in ein eigenes Modul. In ein Modul kommt alles, was irgendwie zusammengehört, bei Dir also alles was mit Mannschaften zu tun hat.
Benutze keine Abkürzungen. spieleanz -> spieleanzahl, spielegew -> spiele_gewonnen, spiele_verloren, etc.
Was ist `item`?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 19:21
von __blackjack__
`spieleanzahl` könnte man sich eventuell auch sparen, es sei denn es gäbe einen Grund warum gewonnen + verloren + remis *nicht* die Spieleanzahl ergibt.

Und das sind vielleicht auch schon ein paar Attribute zu viel. Die Tore und die „gewonnen, verloren, remis“ = Anzahl-Informationen könnte man jeweils in ein Objekt zusammenfassen.

Wobei mir bei `platzvorher` auch noch irgendwie komisch vorkommt. Kann man den Platz nicht irgendwie berechnen? Mit Verlaufsdaten sollte sich dann auch der vorherige Platz berechnen lassen. Und gewonnen, verloren, remis, Anzahl sollte sich auch aus den Spielen berechnen lassen und dort einfach aus den beiden Informationen wie viele Tore/Gegentore es gab.

Das ist auch irgendwie kein `Konto`. Was ist das denn?

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 22:09
von bwbg
Unter https://gist.github.com/bwbg/6c463c1423 ... f431fbb009 habe ich eine Art "Komplettlösung" abgelegt, welche ohne Benutzereingaben, Dateioperationen, etc. anhand von Begegnungen eine Ligatabelle ausgibt. Diese habe ich ausführlich (exzessiv) kommentiert. Hierbei habe ich weitestgehend auf die fortgeschrittenen Konzepte von Python verzichtet und möglichst imperativ gearbeitet. Vielleicht hilft es dir, Bill987654321, weiter.

Grüße ... bwbg

Re: Definition der Klasse Konto

Verfasst: Donnerstag 9. April 2020, 23:43
von __blackjack__
Ich finde die Anordnung ``(('A', 'B'), (1, 3))`` nicht so gelungen weil eigentlich zusammengehörige Werte — Mannschaft und geschossene Tore — parallel geführt werden. Ich hätte das wohl eher als ``(('A', 1), ('B', 3))`` strukturiert. Oder als ``('A', 'B', 1, 3)`` ohne weitere Zusammenfassung. Und dann wohl vielleicht auch ein `namedtuple()` erstellt um den Bestandteilen Namen zu geben.

Die Formulierung mit dem „Definiert …“ in den Docstrings finde ich mindestens komisch, wenn nicht sogar falsch.

Den grossen Kommentarblock am Anfang könnte man als Docstring und in „restructuredText“ schreiben, dann würde der bei einer Umwandlung in Dokumentation auch einfach dort gesetzt werden können. Da könnte man auch mal schauen in wie weit die Docstrings gut aussehen wenn man das umwandelt.

Edit: Und die Funktionsnamen sollten Tätigkeiten beschreiben, sonst gibt's die Gefahr von Namenskollisionen.

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 05:52
von sparrow
Warum heißt die Klasse eigentlich "Konto"? Hat das was mit einer Bank zu tun? Oder einem Nutzerzugang? Was für ein Konto wird denn da durch die Klasse repräsentiert?

Und bei spielegew (also Spielegewicht) sollte man unbedingt mitteilen ob das kg oder lbs sind. (SCNR fiel mir die Woche auf die Füße).

Edit: Nicht dass es da kein Missverständnis gibt: Die Klasse sollte in meinen Augen gar nichts mit "Konto" heißen.

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 07:52
von Bill987654321
Sirius3 hat geschrieben: Donnerstag 9. April 2020, 18:55 Nein, die Klasse muß nicht in ein eigenes Modul. In ein Modul kommt alles, was irgendwie zusammengehört, bei Dir also alles was mit Mannschaften zu tun hat.
Benutze keine Abkürzungen. spieleanz -> spieleanzahl, spielegew -> spiele_gewonnen, spiele_verloren, etc.
Was ist `item`?
"Item" ist die Mannschaftsnummer unter der eine Mannschaft eindeutig zu identifizieren ist. Ich vermute, dass ich "item" nicht brauche, weil eine Mannschaft über ihren Namen eindeutig identifiziert werden kann. Soll ich "item" herausnehmen?

Warum ist es besser, Attribute mit Unterstrich zu verwenden?

Vielen Dank für die Infos.

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 08:11
von Bill987654321
Danke für die Antwort.

`spieleanzahl` könnte man sich eventuell auch sparen, es sei denn es gäbe einen Grund warum gewonnen + verloren + remis *nicht* die Spieleanzahl ergibt.
Ich nehme die Spileanzahl heraus und lasse sie über gewonnen + verloren + remis berechnen

Und das sind vielleicht auch schon ein paar Attribute zu viel. Die Tore und die „gewonnen, verloren, remis“ = Anzahl-Informationen könnte man jeweils in ein Objekt zusammenfassen.
Ich möchte meinen Code so einfach und verständlich wie möglich halten. Wie ich die 3 Attribute zu einem Objekt zusammenfassen soll, weiß ich leider nicht und auch nicht wie man das programmiert. Das müsstest du bitte für mich programmieren.

Wobei mir bei `platzvorher` auch noch irgendwie komisch vorkommt. Kann man den Platz nicht irgendwie berechnen? Mit Verlaufsdaten sollte sich dann auch der vorherige Platz berechnen lassen. Und gewonnen, verloren, remis, Anzahl sollte sich auch aus den Spielen berechnen lassen und dort einfach aus den beiden Informationen wie viele Tore/Gegentore es gab.
Den "Platz vorher" möchte ich der Tabelle es vorhergehenden Spieltags entnehmen. Ich möchte die Tabelle jedes Spieltags in der Datenbank speichern (Das ist mein Wunsch und wäre froh, wenn dieser akzeptiert werden würde) und nicht die Tabelle bei Bedarf neu berechnen lassen. Ich denke, dass es einfacher ist, die einzelnen Tabellen abzuspeichern. Man kann das ja noch umprogrammieren, wenn das Programm mal läuft.

Das ist auch irgendwie kein `Konto`. Was ist das denn?
Wie soll ich das "Konto" nennen?

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 08:14
von Bill987654321
bwbg hat geschrieben: Donnerstag 9. April 2020, 22:09 Unter https://gist.github.com/bwbg/6c463c1423 ... f431fbb009 habe ich eine Art "Komplettlösung" abgelegt, welche ohne Benutzereingaben, Dateioperationen, etc. anhand von Begegnungen eine Ligatabelle ausgibt. Diese habe ich ausführlich (exzessiv) kommentiert. Hierbei habe ich weitestgehend auf die fortgeschrittenen Konzepte von Python verzichtet und möglichst imperativ gearbeitet. Vielleicht hilft es dir, Bill987654321, weiter.

Grüße ... bwbg
Super! Vielen Dank. Das ist genau das, was ich brauche. Werde es gleich mal ausdrukcen und versuchen, nachzuvollziehen.

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 08:42
von Bill987654321
bwbg hat geschrieben: Donnerstag 9. April 2020, 22:09 Unter https://gist.github.com/bwbg/6c463c1423 ... f431fbb009 habe ich eine Art "Komplettlösung" abgelegt, welche ohne Benutzereingaben, Dateioperationen, etc. anhand von Begegnungen eine Ligatabelle ausgibt. Diese habe ich ausführlich (exzessiv) kommentiert. Hierbei habe ich weitestgehend auf die fortgeschrittenen Konzepte von Python verzichtet und möglichst imperativ gearbeitet. Vielleicht hilft es dir, Bill987654321, weiter.

Grüße ... bwbg
Nochmal vielen Dank für den Code.

Habe den Code gerade mal kurz überflogen und nur eine Passage gefunden, die ich nicht verstehe:

Code: Alles auswählen

Anwendungsbeispiel:

        >>> a = ("A", "B"), (1, 2)  # Begegnung a
        >>> b = ("B", "Q"), (4, 4)  # Begegnung b
        >>> c = ("FOO", "BAR"), (3, 1)  # Begegnung c
Hast du dich hier enentuell vertippt? Die Mannschaften "Q","FOO" und "BAR" werden in der Tabelle nicht ausgegeben. Die Mannschaften heißen in der Tabelle "A","B","C" und "D".

1. B 6 | 6
2. A 3 | 1
3. C 1 | -3
4. D 1 | -4

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 09:32
von Bill987654321
Ich habe den Code gerade geändert:

Code: Alles auswählen

MANNSCHAFTSANZAHL = 4
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt"

def mannschaftsnamen_eingeben(anzahl):
    namen = []
    for i in range(1, anzahl + 1):
        namen.append(input(f"Gebe den Namen der {i}. Mannschaft ein: "))
    namen.sort()
    return namen

def mannschaftsnamen_speichern(namen, dateiname):
    with open(dateiname, "w", encoding="utf-8") as datei:
        for name in namen:
            datei.write(f"{name}\n")

def mannschaftsnamen_laden(dateiname):
    namen = []
    with open(dateiname, encoding="utf-8") as lines:
        for line in lines:
            namen.append(line.rstrip())
    return namen

def print_numbered_items(items):
    for i, item in enumerate(items, 1):
        print(f"{i}. {item}")

def main():
    print("Eingabe")
    mannschaftsnamen = mannschaftsnamen_eingeben(MANNSCHAFTSANZAHL)
    print_numbered_items(mannschaftsnamen)

    print("Speichern")
    mannschaftsnamen_speichern(mannschaftsnamen, MANNSCHAFTSNAMEN_DATEINAME)

    print("Laden")
    mannschaftsnamen = mannschaftsnamen_laden(MANNSCHAFTSNAMEN_DATEINAME)
    print_numbered_items(mannschaftsnamen)


class Konto:
    def __init__(self, item, name,spiele_gewonnen, spiele_remis, spiele_verloren, plustore, minustore):
        self.item = item
        self.name = name
        self.spiele_gewonnen = spielegewonnen
        self.spiele_remis = spiele_remis
        self.spiele_verloren = spiele_verloren
        self.plustore = plustore
        self.minustore = minustore

if __name__ == "__main__":
    main()
Wie soll ich die Klasse Konto nennen?

Denkt bitte daran, dass ich Anfänger bin. Wenn (nur) geschrieben wird, was falsch ist, hilft es mir meistens nicht weiter. Ich benötige dann auch einen Lösungsvorschlag. Versucht euch bitte in meine Lage zu versetzen. Wenn in Antworten zu viele Fachbegriffe enthalten sind, kommt man vom hundertsten ins tausendste. Konzentriert euch bei euren Antworten bitte auf das Wesentliche.
Ich denke, dass klar sein müsste, wie mein Programm aufgebaut sein soll.
Ich möchte pro Spieltag (bezogen auf die 1. Fussball-Bundesliga) 9 Ergebnisse eingeben. Aus diesen Ergebnissen soll Python die Tabelle ausrechnen. Am Ende soll die Tabelle ausgegben werden.
Verzichtet bitte darauf, Tabellen (bei Bedarf) zu berechnen. Wie ich bereits geschrieben habe, möchte ich für jeden Spieltag in der Datenbank die Tabelle ablegen und bei Bedarf aus den Tabellen Werte auslesen. Der Speicherplatz sollte bei so einem kurzen Programm ausreichen.
Ich benötige kein Profi-Programm, das mit allen "Raffinessen" ausgestattet ist, die Python zu bieten hat. Habe nicht vor, ein Profi-Programmierer zu werden und kann das auch nicht, weil mir die Zeit dazu fehlt. Akzeptiert bitte meine Vorgehensweise bei diesem Programm.

:) :) :) Wünsche allen frohe Ostern :) :) :)

Bill

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 09:47
von __blackjack__
@Bill987654321: Natürlich werden "Q", "FOO", und "BAR" nicht in einer Tabelle ausgegeben. Ausgabe als Tabelle kommt in dem Anwendungsbeispiel gar nicht vor. Das ist ein Anwendungsbeispiel der Funktion `punkte_begegnung()`. Für die Funktion mit der Ausgabe der Tabelle gibt es kein Anwendungsbeispiel in der Dokumentation. Was da beim Ablauf des Moduls als Programm ausgegeben wird, wird natürlich nicht von irgendwelchem Code beeinflusst der in der Dokumentation steht, sondern nur von Code der auch tatsächlich ausgeführt wird.

Die Anwendungsbeispiel laufen auch alle exakt so durch wie sie da stehen. Das lässt sich mit dem `doctest`-Modul aus der Standardbibliothek nachprüfen.

`item` müsste eher `id` heissen. Das wäre aber, falls man es nicht noch woanders braucht, auch bei einem eindeutigen Namen nicht nötig, denn Objekte haben schon eine Identität an der man sie auseinander halten kann. Zumindest solange sie sich im Arbeitsspeicher befinden, kann man zwei ”gleiche” Objekte immer mit ``is`` beziehungsweise ``is not`` auseinander halten. Und sich mit der `id()`-Funktion für jedes zu einem bestimmten Zeitpunkt existierende Objekt auch eine numerische ID geben lassen. Ein `id`-Attribut bräuchte man beispielsweise für eine relationale Datenbank. Selbst wenn da der Mannschaftsname eindeutig ist, für Fremdschlüssel nimmt man in aller Regel IDs. Deswegen packt man in jede Tabelle in aller Regel einen künstlichen Schlüssel, auch wenn es andere Schlüsselkandidaten gibt.

UnterstrichezuverwendenhatdengleichenGrundwarummanLeerzeichenzwischenWortesetzt. Ohne ist das schwerer zu lesen. Bei `spieleremis` musst ich beispielsweise zweimal lesen, weil ich die Trennung im Kopf erst als „spieler emis“ gemacht habe, mich kurz wunderte, und dann erst die Erleuchtung hatte, dass bei „spiele remis“ getrennt werden muss. Schlimm wird das wenn dann zusätzlich Abkürzungen dazu kommen und man manchmal wirklich Probleme bekommt, daraus im Kopf etwas sinnvolles zu machen. Eventuell interpretiert man es dann auch noch falsch und wundert sich warum der Wert nicht zum Namen passt.

Werte zu einem Objekt zusammenfassen bedeutet eine Klasse zu schreiben. Oder zumindest einen Typ mit `namedtuple()` zu erstellen.

Wie Du `Konto` nennen sollst? So dass es ein passender Name für die zusammengefassten Werte ergibt. Und die Reihenfolge ist normalerweise umgekehrt — ich glaube ich habe noch nie *nachdem* ich eine Klasse geschrieben habe, über deren Namen nachgedacht. Wie die heisst, bestimmt letztlich auch was da reingehört und was nicht. Und falls man sich die Attribute anschaut, und feststellt, dass man für diese Zusammenstellung keinen guten prägnanten Namen findet, dann ist das oft ein Warnzeichen, dass man Sachen zusammensteckt die nicht zusammengehören.

`plustore` und `minustore` finde ich noch etwas komisch als Namen. Bin kein Fussballexperte, aber nennt man das nicht üblicherweise `tore` und `gegentore`?

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 10:11
von Bill987654321
__blackjack__ hat geschrieben: Freitag 10. April 2020, 09:47 @Bill987654321: Natürlich werden "Q", "FOO", und "BAR" nicht in einer Tabelle ausgegeben. Ausgabe als Tabelle kommt in dem Anwendungsbeispiel gar nicht vor. Das ist ein Anwendungsbeispiel der Funktion `punkte_begegnung()`. Für die Funktion mit der Ausgabe der Tabelle gibt es kein Anwendungsbeispiel in der Dokumentation. Was da beim Ablauf des Moduls als Programm ausgegeben wird, wird natürlich nicht von irgendwelchem Code beeinflusst der in der Dokumentation steht, sondern nur von Code der auch tatsächlich ausgeführt wird.
Sorry, habe nicht gesehen, dass das innerhalb von """ steht.

Die Anwendungsbeispiel laufen auch alle exakt so durch wie sie da stehen. Das lässt sich mit dem `doctest`-Modul aus der Standardbibliothek nachprüfen.

`item` müsste eher `id` heissen. Das wäre aber, falls man es nicht noch woanders braucht, auch bei einem eindeutigen Namen nicht nötig, denn Objekte haben schon eine Identität an der man sie auseinander halten kann. Zumindest solange sie sich im Arbeitsspeicher befinden, kann man zwei ”gleiche” Objekte immer mit ``is`` beziehungsweise ``is not`` auseinander halten. Und sich mit der `id()`-Funktion für jedes zu einem bestimmten Zeitpunkt existierende Objekt auch eine numerische ID geben lassen. Ein `id`-Attribut bräuchte man beispielsweise für eine relationale Datenbank. Ich möchte die Daten in einer Datenbenk speichern. Weiß jetzt den Typ nicht genau, steht aber (irgendwo) im Postverlauf. Daraus folgt, dass ich eine "id" benötige. Wede gleich entsprechende Änderungen vornehmen und posten.
Selbst wenn da der Mannschaftsname eindeutig ist, für Fremdschlüssel nimmt man in aller Regel IDs. Deswegen packt man in jede Tabelle in aller Regel einen künstlichen Schlüssel, auch wenn es andere Schlüsselkandidaten gibt.

UnterstrichezuverwendenhatdengleichenGrundwarummanLeerzeichenzwischenWortesetzt. Ohne ist das schwerer zu lesen. Bei `spieleremis` musst ich beispielsweise zweimal lesen, weil ich die Trennung im Kopf erst als „spieler emis“ gemacht habe, mich kurz wunderte, und dann erst die Erleuchtung hatte, dass bei „spiele remis“ getrennt werden muss. Schlimm wird das wenn dann zusätzlich Abkürzungen dazu kommen und man manchmal wirklich Probleme bekommt, daraus im Kopf etwas sinnvolles zu machen. Eventuell interpretiert man es dann auch noch falsch und wundert sich warum der Wert nicht zum Namen passt.

Werte zu einem Objekt zusammenfassen bedeutet eine Klasse zu schreiben. Oder zumindest einen Typ mit `namedtuple()` zu erstellen.

Wie Du `Konto` nennen sollst? So dass es ein passender Name für die zusammengefassten Werte ergibt. Und die Reihenfolge ist normalerweise umgekehrt — ich glaube ich habe noch nie *nachdem* ich eine Klasse geschrieben habe, über deren Namen nachgedacht. Wie die heisst, bestimmt letztlich auch was da reingehört und was nicht. Und falls man sich die Attribute anschaut, und feststellt, dass man für diese Zusammenstellung keinen guten prägnanten Namen findet, dann ist das oft ein Warnzeichen, dass man Sachen zusammensteckt die nicht zusammengehören.
Habe das Konto "datensatz_mannschaft" gennant. Ist die Schreibweise so in Ordnung?

`plustore` und `minustore` finde ich noch etwas komisch als Namen. Bin kein Fussballexperte, aber nennt man das nicht üblicherweise `tore` und `gegentore`?
Hier finde ich, dass man konsequenterweise Eigentore und Gegentore schreiben müsste. "Eigentore" könnte man dann missverstehen. Werde Plustore und Minustore lassen.

Re: Definition der Klasse Konto

Verfasst: Freitag 10. April 2020, 13:44
von __blackjack__
@Bill987654321: Was spricht gegen `tore` und `gegentore`? Das ist doch die übliche Bezeichnung für diese beiden Werte? `plustore` und `minustore` habe ich noch nie gehört oder gelesen in diesem Zusammenhang.