Klassen sollten mit einem Großbuchstaben anfangen.
Wenn du keine Umlaute verwenden willst, dann schreib doch gleich "size".
Es ist wesentlich lesbarer, wenn man nicht nach jedem Komma noch ein Leerzeichen setzt.
Gleichzeichen in Klammern würde ich ganz ohne Leerzeichen schreiben.
None ist ein reserviertes Wort in Python, das man in solchen Fällen auch ruhig verwenden sollte. Dein "none" ist ja einfach nur ein String.
Beim Zugriff auf eine Variable macht man keine Anführungszeichen (denn die stehen für einen String). Zudem muss "self.grosse" auch an "grosse" und nicht wie bei dir an "klein" gebunden sein.
Weiterhin solltest du dich schon entscheiden, ob du die Argumente bei der Bestellfunktion oder bei der Initialisierung mitgeben willst. Für letzteres wäre dies eine mögliche Lösung:
Code: Alles auswählen
class Pizza(object):
def __init__(self, size='normal', topping=None):
self.size = size
self.topping = topping
def order(self):
print 'Your %s pizza with %s has been ordered' % (self.size, self.topping)
def main():
p = Pizza('small', 'ham')
p.order()
Möchte man das ganze etwas realistischer gestalten, würde man "order()" außerhalb einer Klasse schreiben. Dann können nämlich auch mehrere "Pizza()"-Instanzen in eine Bestellung aufgenommen werden:
Code: Alles auswählen
ham = Pizza(size=small, topping='ham')
peperoni = Pizza(topping='peperoni') # wenn keine Größe angegeben wird, nimmt die Klasse aus dem Beispiel ja "normal"
order(ham, peperoni)
Schreib doch mal zur Übung den passenden Code dazu.
Denkbar wäre ja vielleicht noch eine Fehlermeldung, wenn der Belag vergessen wurde.
EDIT: Wobei die Behandlung einer unbekannten Zahl an Argumenten für den Anfang vielleicht doch etwas viel ist. Zudem ist eigentlich gar keine Klasse nötig, wenn es wirklich nur um Größe und Belag geht. Da kann auch eine "normale" Funktion genommen werden, die dann der Funktion "order()" übergeben wird.