Sammlung von python patterns

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ganz interessant, IMHO: https://github.com/faif/python-patterns

Was noch fehlt sind Zusatzinformation zu den jeweiligen Patterns...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

jens hat geschrieben:Was noch fehlt sind Zusatzinformation zu den jeweiligen Patterns...
Naja, das sind für mich eher allgemeine Progammier-Pattern und nichts, was jetzt speziell auf Python zugeschnitten ist. Weiterführende Informationen zu einzelnen Pattern dürftest du oftmals über Wikipedia oder eben Google finden können (für letzteres einfach "pattern" hinter den zu suchenden Patternnamen setzen).
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das sehe ich aehnlich, mit Higher-Order-Functions ist `strategy` z.B. ein Witz, die werden in dem Beispiel zwar auch benutzt, die Idee faellt aufgrund der niedrigen Signal-Noise-Ratio aber unter den Tisch ...

Was _vor allem_ fehlt ist Dokumentation, Zusatzinformationen zu den Pattern gibt es ueberall und universell, aber z.B. welcher Teil in `strategy` jetzt das Pattern ist und was der Kerngedanke fuer Python ist ... _das_ fehlt.
lunar

@jens Ich schließe mich meinen Vorrednern an: Für mich sieht das aus wie eine Übersetzung der GoF-Beispiele nach Python... nette Fleißarbeit, aber irgendwie ohne echten Mehrwert.

Kennt man ein Entwurfsmuster, weiß, wann und wie es anzuwenden ist, dann muss man es auch problemlos ohne Hilfe in Python implementieren können und braucht diese Beispielsammlung nicht. Andererseits helfen diese Beispiele auch nicht dabei, Entwurfsmuster zu lernen, insbesondere dahingehend, wann und wie man sie anzuwenden hat, und wann besser nicht.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

lunar hat geschrieben:... insbesondere dahingehend, wann und wie man sie anzuwenden hat, und wann besser nicht.
Das meinte ich mit den fehlenden Zusatzinformationen...

Aber ich finde es schon mal nett, das es so eine Sammlung gibt. Wäre auch was für das Wiki...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Sammlung + Zusatzinformation => Wikipedia

Nicht in Python, aber bevor man sich die Mühe macht und Python-Beispiele ins eigene Wiki schreibt, dann kann man sie auch gleich bei Wikipedia einstellen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

jens hat geschrieben:Aber ich finde es schon mal nett, das es so eine Sammlung gibt. Wäre auch was für das Wiki...
Naja, ich weiß nicht. Ich mag im Moment vielleicht zu sehr die Java-Brille vor Augen haben (weil das neben Python die zweite Sprache ist, die ich "richtig" lerne), aber ich wage mal zu behaupten, dass viele der Pattern wirklich mehr auf Java und Verwandte gemünzt sind, wo Typisierung eine viel größere Rolle spielt als in Python. Ich will nicht sagen, dass z.B. Factory-Pattern unbedingt in Python vermieden werden sollten, aber oftmals benötigt man solche Zwischenschichten doch eigentlich gar nicht. Denn sowas wie in Code definierte Schnittstellen gibt es in Python nicht und auch abstrakte Klassen finden IMHO relativ selten Anwendung in Python-Code. Beim Programmieren in Python nimmt man vielmehr implizit an (z.B. durch Doku) dass die Objekte, auf denen gearbeitet werden soll, einfach ein bestimmtes Verhalten zeigen bzw bestimmte Methoden implementieren. Da braucht es solche Abstraktionen üblicherweise nicht. Ein Wiki zu dem Thema würde in meinen Augen vermitteln, dass dies typische Vorgehensweisen in Python seien, was halt im Großen und Ganzen nicht zutrifft.

Wie gesagt, falls das Stuss gewesen sein sollte, dann lasse ich mich gerne verbessern. Ist halt nur mein Eindruck von der Sache...
lunar

@snafu Der Behauptung, Typisierung würde in Java-artigen Sprachen eine größere Rolle spielen als in Python, gefällt mir nicht. Typisierung ist auch in Python sehr wichtig. Ich widerspreche auch der Behauptung, Entwurfsmuster wären in Python nicht nötig.

Ich würde allenfalls sagen, dass Entwurfsmuster in Python nicht so auffallen, weil Python höhere Ausdrucksstärke und ein mächtigeres Typsystem hat. Beispielsweise gibt es das Command-Muster und das Observer-Muster auch in Python. Nur würde man dabei halt keine Command- oder Observer-Klassen erzeugen, sondern einfach Funktionsobjekte herumreichen. Aber das Entwurfsmuster, oder besser gesagt die Idee dahinter, verschwindet ja nicht, nur weil keine Klassen in Erscheinung treten.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@lunar: Dass Entwurfmuster in Python völlig unnötig sind, hatte ich eigentlich nicht gemeint. Aber deine Aussage, dass sie nicht so sehr auffallen, wie in manchen anderen Sprachen - also weniger "explizit" sind -, trifft es wohl noch am Besten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Irgendwo habe ich die Aussage aufgeschnappt, das Patterns eigentlich nur "Unzulänglichkeiten" der Sprache sind, die in anderen Sprachen ggf. schon Teil der Sprache geworden sind, wie etwa das "Class"-Pattern. Ich denk da ist schon was dran, vor allem wenn man anschaut, wie einfach viele Patterns in Python sind, bei Strategy wusste ich erst nachher wie das heißt, nachdem ich das schon oft in Python genutzt habe.

Und das "Proxy"-Pattern ist auch etwas, was man so nebenbei erfindet..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Leonidas hat geschrieben:Irgendwo habe ich die Aussage aufgeschnappt, das Patterns eigentlich nur "Unzulänglichkeiten" der Sprache sind, die in anderen Sprachen ggf. schon Teil der Sprache geworden sind, wie etwa das "Class"-Pattern.
Wahrscheinlich hast du den Artikel mal auf Wikipeida gelesen oder einen der dort genannten Texte:
http://en.wikipedia.org/wiki/Software_design_pattern hat geschrieben:The design patterns may just be a sign of some missing features of a given programming language (Java or C++ for instance). Peter Norvig demonstrates that 16 out of the 23 patterns in the Design Patterns book (that is primarily focused on C++) are simplified or eliminated (via direct language support) in Lisp or Dylan.[26] See also Paul Graham's essay "Revenge of the Nerds".
Das Leben ist wie ein Tennisball.
Antworten