Ganz interessant, IMHO: https://github.com/faif/python-patterns
Was noch fehlt sind Zusatzinformation zu den jeweiligen Patterns...
Sammlung von python 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).jens hat geschrieben:Was noch fehlt sind Zusatzinformation zu den jeweiligen Patterns...
- 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.
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@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.
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.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das meinte ich mit den fehlenden Zusatzinformationen...lunar hat geschrieben:... insbesondere dahingehend, wann und wie man sie anzuwenden hat, und wann besser nicht.
Aber ich finde es schon mal nett, das es so eine Sammlung gibt. Wäre auch was für das Wiki...
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.
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.
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.jens hat geschrieben:Aber ich finde es schon mal nett, das es so eine Sammlung gibt. Wäre auch was für das Wiki...
Wie gesagt, falls das Stuss gewesen sein sollte, dann lasse ich mich gerne verbessern. Ist halt nur mein Eindruck von der Sache...
@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.
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.
@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.
-
- 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..
Und das "Proxy"-Pattern ist auch etwas, was man so nebenbei erfindet..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wahrscheinlich hast du den Artikel mal auf Wikipeida gelesen oder einen der dort genannten Texte: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.
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.