Aufgabenverwaltung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

@Xfd7887a: Naja zwei Fächer kann man mit `cmp()` vergleichen. Mache ich da ja. ;-) Was da konkret passiert hängt davon ab wie die beteiligten Objekte ``<`` oder ``>`` und ``==`` implementieren. Da hier Zeichenketten zu erwarten sind, ist das Verhalten also von diesen Operatoren auf Zeichenketten abhängig. ``==`` sollte klar sein, und ``<``/``>`` wird lexikographisch gesehen.

Um das mit den Hashwerten wirklich zu verstehen, muss man sich klar machen wie die Datenstruktur „hashtable” funktioniert. Ansonsten reicht es zu beachten dass wenn zwei Objekte mit ``==`` als gleich angesehen werden, dann müssen sie auch bei `hash()` das selbe Ergebnis liefern. Und das `hash()`-Ergebnis von einem Objekt sollte immer gleich sein. Praktisch folgt daraus das alles was zum Vergleich verwendet wird auch für die Berechnung des Hashwertes herangezogen werden muss, und dass keiner dieser Werte verändert werden sollte. Sonst kann man Exemplare von diesen Objekten nicht in Datenstrukturen verwenden die sich auf diese Invariante verlassen, also zum Beispiel als Schlüssel in Wörterbüchern (`dict`) oder als Elemente in Mengen (`set`, `frozenset`).

`classmethod()`\s sind Methoden auf Klassen die als erstes Argument die Klasse übergeben bekommen auf der sie aufgerufen werden. Und das ist dann auch das `cls`-Argument.

Wenn etwas nicht im Buch steht, dann ist aber ziemlich sicher in der Python-Dokumentation beschrieben. ;-)
Xfd7887a
User
Beiträge: 135
Registriert: Montag 23. Juni 2014, 17:11

@BlackJack Danke für die ausführliche Antwort :D. Das mit den Hash-Werten werden ich mir nochmal anschauen.
Antworten