Guten Morgen, ihr Lieben.
Zuerst möchte ich mich mal für eure Hilfe Bedanken. Scheine ja wirklich ein ganz schönes Programmierchaos im Kopf zu haben. In der Arbeit wird ja auch eher Quick'n'Dirty verlangt, aber privat möchte ich es schon richtig machen.
So wie es aussieht, habe ich einen ruhigen Arbeitstag, die Computer tuen, und die Benutzer sind zufrieden. Ich werde aller Wahrscheinlichkeit eure Fragen heute also zeitnah beantworten können.
Aber fangen wir mal an:
Dazu müßte man doch genau wissen, was diese Klasse leisten soll. Mir ist es im Moment nicht klar (und aus Deinem undokumentierten Ansatz geht das auch imho nicht hervor).
Ich habe mir das so vorgestellt, dass ein gesamter Verkaufsprozess dort erfasst wird. Also die Produktobjekte, das Kundenkonto, eine Liste von Transaktionen (also z.B. Storno, oder Rabatt, reiner Text und Zeitangabe. Wird wohl wieder ein kleines Objekt werden.
Evtl. magst Du Dir doch zuerst mal Elixir angucken? Trotz der mittlerweile vorhandenen deklarativen Syntax bei SQLAlchemy halte ich Elixir immer noch für einfacher. Schau Dir doch da mal das Tutorial an - einfacher geht der Einstieg kaum (und er ähnelt Deinem Ansatz von der Komplexität hier ziemlich).
Habe mir beide schon etwas angeschaut, werde das aber nochmal gründlich wiederholen.
Zu Deinem Code fällt mir noch folgendes ein:
- beachte mehr PEP8, Einrückungen sollten 4 Spaces sein, Funktionen und Methoden werden klein_und_mit_underscore benannt. Zwischen Paramertern und dem abgrenzenden Komma immer ein Space
Das war jetzt nur kurz in Gedit geschrieben, normalerweise verwende ich Eclipse, und da ist das schon voreingestellt.
- "addProduct" kapselt letztlich direkt nur die append-Methode einer Liste. Daher kann man sich so etwas auch sparen.
Ich habe bereits an die Zukunft gedacht... und ich rechne damit, dass da nochmal was an Funktionalität dazu kommen wird.
- dieses "getPrice()" einer vermuteten Product-Klasse riecht auch zu sehr nach Java. Anstelle von Gettern und Settern nutzt man in Python eher Properties; sofern Du keine weiteren Tests oder Berechnungen in den Methoden vornimmst, kann man auch einfach direkt auf das Attribut zugreifen.
Erwischt, wobei es bei mir eher C++ mit wxWidgets ist. und bei wxWidgets heißen die Methoden nunmal so... und das hat mir eben gefallen.
Werde mir die Pythonstandard antrainieren.