Seite 3 von 3
Re: wow x)
Verfasst: Sonntag 12. Oktober 2008, 10:23
von snafu
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.
Re: wow x)
Verfasst: Sonntag 12. Oktober 2008, 11:16
von cofi
snafu hat geschrieben:Es ist wesentlich lesbarer, wenn man nicht nach jedem Komma noch ein Leerzeichen setzt.
Gleichzeichen in Klammern würde ich ganz ohne Leerzeichen schreiben.
Nicht das Leerzeichen NACH dem Komma ist störend, sondern davor.
@rootmentor Arbeite mal die PEP8 durch. Im Wiki ist auch eine Übersetzung, falls dich das Englisch des Originals abhält. Ausserdem solltest du den Code auch durchlesen, der gepostet wird und dich zusätzlich fragen "Warum ist das so geschrieben?" und wenn du es nicht verstehst nachfragen. So hättest du jede Menge Fehler in deinem Schnipsel vermeiden können.
Idioms & Anti-Idioms aus den neuen 2.6er-Docs ist in dem Zug vielleicht auch keine schlechte Lektüre

Verfasst: Sonntag 12. Oktober 2008, 12:59
von Rootmentor
Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?
Also jetzt siehsts doch schon etwas schicker aus:
Code: Alles auswählen
#!/usr/bin/env python
class Pizza(object):
def __init_(self , size = "small" , topping = None):
self.size = "small"
self.topping = None
def order(self , size , belag):
print "You choosed a" ,user_size,user_topping,"pizza"
topping_list = ("Ham , Peperoni , Tomato , Onion")
print "Welcome to Pizza.py you can choose from theese toppings"
print topping_list
user_size = raw_input("What size you want?")
user_topping = raw_input("What topping you want?")
while user_topping not in topping_list:
user_topping = raw_input("What topping you want?")
p = Pizza()
p.order(user_size , user_topping)
Man bin ich stolz auf mich xD
danke , Rootmentor
Verfasst: Sonntag 12. Oktober 2008, 13:18
von snafu
Ohne dir nahetreten zu wollen, aber bei deinem Verhalten bleibt einem eigentlich nur noch ein Kopfschütteln. Du scheinst dir nichts von dem anzunehmen, was man dir rät, sondern willst offenbar sowieso dein eigenes Ding machen. Du wurdest jetzt mehrmals auf die Fehler in deinem Code hingewiesen, nimmst aber weiterhin deine falsche Version als Grundlage für weitere Fehler. Ich für meinen Teil habe jetzt ehrlich gesagt keine Lust mehr, dir zu helfen.
Verfasst: Sonntag 12. Oktober 2008, 13:45
von HWK
snafu hat geschrieben:Ich für meinen Teil habe jetzt ehrlich gesagt keine Lust mehr, dir zu helfen.
Das kann ich verstehen.
MfG
HWK
Verfasst: Sonntag 12. Oktober 2008, 14:13
von BlackJack
Me Too. Ist das Dummheit oder ein Troll?
Verfasst: Sonntag 12. Oktober 2008, 14:35
von snafu
Ich vermute einen relativ jungen Typen dahinter, dem das alles gerade ein bißchen zuviel Input ist. Da schaltet der Kopf schon mal ab und man probiert es mit der Brechstange.
Verfasst: Sonntag 12. Oktober 2008, 15:57
von Leonidas
Rootmentor hat geschrieben:Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?
Ja, dadurch dass du PEP8 ignorierst gibst du anderen das Signal dass du auf gutgemeinte, jahrelang erprobte Methoden pfeifst. Brauchst dich dann nicht wundern, dass die Leute eher seltener helfen wollen.
Verfasst: Sonntag 12. Oktober 2008, 16:46
von Y0Gi
Rootmentor hat geschrieben:Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?
Nur mit uns und anderen, die ihn lesen sollen (ohne ihre Lesegeschwindigkeit durch ungewöhnliche Formatierung verringern zu müssen)
Noch 'n Tipp zu Klassen: Wenn du darin Methoden hast, die in ihren Rümpfen nicht auf ``self`` zugreifen, dann sollten sie in den allermeisten Fällen auch nicht Teil der Klasse sein. Die Klasse ist nicht (wie bei PHP *hust*) als Namensraum gedacht, sondern für wirkliche objektorientierte Modellierung dessen, was du abbilden möchtest.
Verfasst: Sonntag 12. Oktober 2008, 22:14
von Rootmentor
is das nich das was programmieren grad so einzigartig macht ich mein wenn alle mail programme alle betriebsysteme alle handy betriebssysteme gleich aussehen würden. Also ich fänds langweilig

Verfasst: Sonntag 12. Oktober 2008, 22:30
von lunar
Du hast nicht viel Ahnung vom Programmieren ...
Verfasst: Sonntag 12. Oktober 2008, 22:32
von Rootmentor
da ich vor 6wochen damit angefangen bin ...
Verfasst: Sonntag 12. Oktober 2008, 22:52
von Leonidas
Rootmentor hat geschrieben:is das nich das was programmieren grad so einzigartig macht ich mein wenn alle mail programme alle betriebsysteme alle handy betriebssysteme gleich aussehen würden.
Heißt aber nicht, dass da der Quelltext wie Kraut und Rüben ausschaut.
Rootmentor hat geschrieben:Also ich fänds langweilig

Du weißt doch gar nicht, wie der Quelltext deines Betriessystemes, der deines Handys und der deines Mailclients aussieht. Warum ziehst du schlüsse über etwas, das du nicht kennst?
Verfasst: Montag 13. Oktober 2008, 04:51
von snafu
Don't feed the troll, sag ich nur (auch wenn ich normalerweise nicht so unfreundlich bin).
Verfasst: Montag 13. Oktober 2008, 15:28
von draci
Don't feed the troll, sag ich nur (auch wenn ich normalerweise nicht so unfreundlich bin).
*HILFE* noch ein Troll

(
http://www.python-forum.de/topic-16161. ... s&start=30)
Verfasst: Montag 13. Oktober 2008, 15:56
von snafu
Der hat sich aber wenigstens zum Schluss noch einigermaßen Mühe in Sachen Ausdrucksweise und Rechschreibung gegeben und war nur am Anfang etwas irritiert, weil er aus nem anderen Umfeld kommt. Unser Freund hier zeigt aber ganz und gar keine Einsicht, spart nicht an Eigenlob und kommt irgendwie so rüber als will er uns beweisen was für ein mehr oder weniger toller Programmierer er schon ist. Und sowas kann ich mal gar nicht ab.
Anders gesagt: Ich kann über Ausdrucksschwächen und gewissen Problemen beim Mitdenken/Aufnehmen der Informationen ja noch hinwegsehen. Aber wenn einer wirklich 0% von den Tipps annehmen will, die ihm gegeben werden, ist die ganze Sache in meinen Augen einfach sinnlos. Am Anfang schien sich das noch in Grenzen zu halten und daher hat er's auch zunächst von mir erklärt bekommen.
Verfasst: Montag 13. Oktober 2008, 16:00
von Rootmentor
Hey ich versuch den scheiß hier einigermaßen hinzubekommen!
Verfasst: Montag 13. Oktober 2008, 16:16
von cofi
Rootmentor hat geschrieben:Hey ich versuch den scheiß hier einigermaßen hinzubekommen!
Da du wohl aber entweder unsere Beiträge nicht liest, nicht verstehst oder nicht verstehen willst, musst du das alleine hinbekommen.