OOP Ansatz zur Trennung von GUI Layout und Funktion

Fragen zu Tkinter.
BlackJack

@boid: Tupel sind im Grunde wie Listen, nur dass man sie nicht verändern kann. Es gibt einen kleinen Speicherplatzvorteil, weil Tupel, da nicht veränderbar, keinen Platz für spätere `append()`-Operationen "überbelegen", aber das ist hier ziemlich teuer erkauft, weil Du das `append()` ja recht häufig brauchst und es bei Tupeln halt von der Laufzeit echt ungünstig ist.

Auch bei einer `__readHeader()` braucht man keine extra `get`-Methode wenn die das Ergebnis an das Attribut `header` bindet. Wobei die zwei Unterstriche etwas übertrieben sind, wenn nicht gar schlechter Entwurf. Zwei führende Unterstriche sind dazu da, um Namenskollisionen in Unterklassen oder "Mixin"-Klassen zu vermeiden und nicht um so eine Art `private` wie in C++/C#/Java zu erzwingen. `private` ist in Python per Konvention *ein* führender Unterstrich. Das sagt anderen Programmierern, dass ist ein Implementierungsdetail, benutzen auf eigene Gefahr.

Meine Kritiken sind meistens kurz, knapp und technisch. Bitte nicht in den falschen Hals bekommen, ist wirklich nett gemeint und nicht als Angriff. Natürlich kann man nicht alles in der Standardbibliothek kennen, gerade als Einsteiger in die Sprache.
boid
User
Beiträge: 9
Registriert: Mittwoch 30. Januar 2008, 17:10

keine Sorge, habe es nur als konstruktive Kritik aufgefasst und auch als solche empfunden.
BlackJack

Mal ein völlig ungetesteter Anfang, wie man das mit weniger Klasse(n) ;-) und mehr und abstrakteren Funktionen machen kann: http://paste.pocoo.org/show/25093/

Ist vielleicht genauso unverständlich wie dreifach indirekter Indexzugriff in tief verschachtelten Schleifen, aber dafür kompakter. :-D
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

BlackJack hat geschrieben:Meine Kritiken sind meistens kurz, knapp und technisch. Bitte nicht in den falschen Hals bekommen, ist wirklich nett gemeint und nicht als Angriff.
Daraus solltest du dir eine Signatur machen. :wink:
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
boid
User
Beiträge: 9
Registriert: Mittwoch 30. Januar 2008, 17:10

Danke, BlackJack. Habe zwar am Wochenende auch schon weiter gemacht und die Vorschläge array und StringIO eingebaut, aber ich werde mir Dein Beispiel nochmal anschauen.

An das umstellen der Klasse hatte ich mich noch nicht gewagt. Das hätte ja quasi fast ein neues Skript bedeutet und dafür tat das alte vorerst genau das was es auf die schnelle erledigen sollte.

Werde mir heute abend dann einmal Deinen Code anschauen.

PS: habe doch schon mal gleich überflogen. unterstützt halt nicht alles was ich implementiert hatte, aber ich sah schon ganz neue sachen wie islice().
Antworten