@Kohtachan: Man kann auf der Webseite den Quelltext zum Buch bekommen (das wird einem dann als PDF(!) per E-Mail zugeschickt) und ich würde damit nicht lernen wollen. Bei den Autos führt das dann zu so etwas:
Code: Alles auswählen
class Auto:
"""
Erstellt das Objekt Auto für einen Gebrauchtwagenhändler.
"""
def __init__(self, ma, mo, bj, pr):
"""
Initialisiert ein neues Objekt Auto
Argumente:
* Marke (string): Marke des Gebrauchtwagens
* Modell (string): Modell des Gebrauchtwagens
* Baujahr (int): Baujahr des Fahrzeugs
* Preis (int): Angestrebter Verkaufspreis
"""
self.__Marke = ma
self.__Modell = mo
self.__Baujahr = bj
self.__Preis = pr
def getMarke(self):
"""
Gibt die Marke des Autos zurück.
"""
return self.__Marke
def getModell(self):
"""
Gibt das Modell des Autos zurück.
"""
return self.__Modell
def getBaujahr(self):
"""
Gibt das Baujahr des Autos zurück.
"""
return self.__Baujahr
def getPreis(self):
"""
Gibt den Preis des Autos zurück.
"""
return self.__Preis
def setPreis(self, preis_neu):
"""
Ändert den Preis des Autos
"""
if abs(self.__Preis - preis_neu) < self.__Preis * 0.05:
self.__Preis = preis_neu
else:
print("Die Abweichung zum vorherigen Preis ist sehr groß.")
bestaetigung = input("Soll %d als neuer Preis"%preis_neu +
"festgelegt werden?(ja/nein)")
if bestaetigung == "ja":
self.__Preis = preis_neu
auto1 = Auto("VW","Golf",2011, 5000)
auto2 = Auto("Renault","Clio",2013, 6000)
auto3 = Auto("Porsche","Panamera",2014, 25000)
wert = eval(input("Geben Sie den neuen Preis ein: "))
auto1.setPreis(wert)
print ("Neuer Preis:",auto1.getPreis())
Das ist kein idiomatisches Python! Nicht nachmachen!
Der Autor mag anscheinend auch nicht nur keine Python-Konventionen (
Style Guide for Python Code) sondern ist in seinem eigenen Code auch extrem inkonsequent und was Leerzeichensetzung angeht würde ich sogar sagen recht schlampig. Ob nach Kommas, zwischen Funktionen/Methoden und den runden Klammern zum Aufruf, oder um Gleicheitszeichen bei Schlüsselwortargumenten Leerzeichen gesetzt sind oder nicht, scheint der Zufall zu entscheiden.
`eval()` kommt 24 in den Codebeispielen vor — das sollte genau 0 mal vorkommen.
39 Namen mit angehängter Nummer, wobei ein paar sogar sinnlos eine Nummer angehängt haben, weil es den Namen nur einmal gibt. Dabei kommt es auch vor das in solchen Fällen die Nummer nicht 1 ist!
Bei Tk wird natürlich `place()` verwendet. Was man natürlich *nicht* machen sollte.
Es gibt auch Code der syntaktisch falsch ist. Ich würde ja von einem Buchautoren erwarten, dass der seine Beispiele automatisiert testet und sie *mindestens* am Compiler vorbei kommen.