@Einstein: Ich habe mal in das verlinkte Buch geschaut und das ist gruselig. War auch irgendwie zu erwarten, denn der Autor hat zu allen möglichen Programmiersprachen Bücher geschrieben. Der verspricht nicht nur für Python sondern auch für Java, C++, PHP, und Arduino den leichten Weg zum Experten. Das ist üblicherweise ein Warnzeichen. Der kann vielleicht programmieren, aber hat nicht wirklich viel Ahnung von Python und wie man damit idiomatisch programmiert.
Beim schnellen durchblättern: Es wird `eval()` benutzt um Benutzereingaben in Zahlen umzuwandeln.
Wie Objekte funktionieren ist anscheinend nicht verstanden worden. Es steht dort das bei ``for item in sequence: item = item * 2`` sich die Werte in `sequence` nicht ändern weil `item` nicht die Elemente aus der Liste sind, sondern Kopien davon und das man nur die Kopie verändert. WTF‽
Wenn man die Listenelemente verändern will, soll man laut Author das hier machen:
Code: Alles auswählen
liste = [3, 6, 123, 54, 927]
print (liste)
for inhalt in enumerate(liste):
liste[inhalt[0]] = inhalt[1] * 2
print (liste)
Gefolgt von der Anmerkung das man daran sieht das ``for``-Schleifen nicht immer sinnvoll sind und eine ``while``-Schleife hier einfacher wäre. WTF‽ Das man in Python grundsätzlich eher neue Listen erstellt, statt vorhandene zu verändern, wäre hier wohl die sinnvollere Anmerkung.
`range()` gibt angeblich eine Liste zurück. Ob der das Buch auch schon für Python 2 am Start hatte?
Bei OOP gibt es dann ziemlich am Anfang schon den Unsinn das man zwei führende Unterstriche für Kapselung verwendet. Und gleich darauf kommen dann natürlich Getter und Setter, damit man da dann wieder dran kommt. Natürlich alles nicht in der für Python üblichen Namensschreibweise sondern in camelCase.
Als Beispiel für eine Klassenvariable gibt's dann den ”Instanzzähler” damit der Autohändler weiss wieviele Autos er hat. Argh! Und runtergezählt wird mit einer `__del__()`-Methode. Natürlich ohne irgendeinen Hinweis was für Probleme man sich durch die blosse Existenz dieser Methode einhandeln kann. Doppel-Argh! ``del`` löscht angeblich Objekte. Die Vererbungsbeispiele machen keinen Sinn, zeigen also nur die Syntax. Das Buch ist IMHO für die Tonne…
Das Kapitel über Dateien ist einfach nur umständlich und unpythonisch.
Im Tk-Kapitel wird reichlich Gebrauch von `place()` mit absoluten Positionsangaben gemacht. Und es wird von `Button` ein `MyButton` abgeleitet mit einer Methode die auch einfach eine Funktion hätte sein können. Mir ist absolut schleierhaft was dieses Beispiel vermitteln soll. Und natürlich wird fröhlich auf globale Variablen zugegriffen. Da das Tk-Kapitel nach dem OOP-Kapitel kommt, hätte man das dort eigentlich richtig machen können/sollen.
Im letzten Kapitel, einem Anwendungsbeispiel wird dann noch mal schön gezeigt wie man GUI-Programme *nicht* schreiben sollte. Mal abgesehen davon das es extrem unschön ist, sind da auch so nette Fehler wie mehr als ein `Tk`-Objekt enthalten.