Hi Stefan, On 2017-01-08 18:52, Stefan Ram wrote:
Ausgeben
»print« rundet Zahlen bei der Ausgabe etwas, während die Konsole alle Nachkommastellen anzeigt.
`print` verwendet die Methode `__str__` zur Umwandlung in einen String, während in der Konsole (Python-Shell) `__repr__` verwendet wird. Beide Methoden können unterschiedlich implementiert sein (siehe unten).
Variablen
Eine Variable wird durch eine Zuweisung definiert. Eine Variable hat keinen Typ, sondern Werte haben einen Typ.
Eine wichtige Einsicht!
Eine Variable wird an eine Liste gebunden, die Liste wird also bei einer Zuweisung nicht kopiert. (Kopieren kann mit nachgestelltem slice »[:]« erfolgen.)
Das kopiert nur die erste "Ebene" der Liste ("flache Kopie", "shallow copy"). "Innere" Listen oder Objekte werden dabei also nicht kopiert, sondern deren Referenzen übernommen.
L = [[1, 2], [3, 4]] L2 = L[:] L[0].append(2) L2 [[1, 2, 2], [3, 4]]
»range(2,7)« ergibt einen Bereich (einen Iterator) und »range(2)« bedeutet »range(0,2)«.
In Python 2 ergibt `range` eine Liste, in Python 3 einen Iterator.
Die spezielle Methode »__string__« repräsentiert Objekte einer Klasse als Zeichenfolge.
Muster
def __string__(self,...): return "string"
Du meintest wahrscheinlich `__str__`. Wie oben gesagt, gibt es auch noch `__repr__`. Üblicherweise wird `__str__` für eine "nutzerfreundliche" Darstellung verwendet und `__repr__` eher für eine "entwicklerfreundliche".
s = "abc " print(s) abc s # Nur hier sieht man das Leerzeichen am Ende 'abc '
import decimal d = decimal.Decimal("1.23") print(d) 1.23 d Decimal('1.23')
Zu deinem Beispiel: "Technisch" kann man `__str__` und `__repr__` mit weiteren Argumenten außer `self` definieren, aber es wird praktisch nie gemacht: Beide Methoden werden üblicherweise in Zusammenhängen verwendet, bei denen keine Argumente übergeben werden (können).
class A: ... def __str__(self, x="x"): ... return "a" + x ... a = A() print(a) ax print(a.__str__("y")) ay
Wie du siehst, ist der explizite Aufruf von `__str__` relativ "unhandlich". :-) Viele Grüße Stefan