Design Patterns in Python sinnvoll (für Clean Code)?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Hallo zusammen,

ich beschäftige mich aktuell mit dem Thema Design Patterns in Python. Da Python keine "reine" OOP-Sprache ist können Design Patterns mit first class Methoden eleganter gelöst bzw. überflüssig gemacht werden. So wie ich das Verstanden haben ist das mehr der Pythonic-Way (und für mich persönlich einfach simpler).
Meine Frage: Gibt es irgendwelche Design Patterns (modifiziert), die sinnvoll sind als Design Pattern zu verwenden, oder würdet Ihr grundlegend darauf verzichten?
Mir geht es hier um die Frage was besser geeignet ist für Clean Code. Ich bin offen für eure Meinungen :)
Danke und viele Grüße :)
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Danke schonmal für jegliche Hilfe :)
Danke und viele Grüße :)
Benutzeravatar
grubenfox
User
Beiträge: 597
Registriert: Freitag 2. Dezember 2022, 15:49

Ich meine dazu erst mal wenig (leider mache ich mittlerweile viel zu wenig in Python), stattdessen verweise ich mal auf das was andere Leute dazu geschrieben haben:

https://refactoring.guru/design-patterns/python
https://www.geeksforgeeks.org/tag/pytho ... n-pattern/

Wobei mindestens das Singleton-Pattern ist definitiv sinnvoll! Nutzen wir alle jedesmal wenn wir

Code: Alles auswählen

import
schreiben...

https://www.geeksforgeeks.org/singleton ... ete-guide/

und das Borg-Singleton hatte ich früher immer gerne genutzt.
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Danke dir grubenfox :)

Dann werde ich mir mal deine Links zu Gemüte führen :)
Danke und viele Grüße :)
Benutzeravatar
snafu
User
Beiträge: 6844
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du könntest auch innerhalb von Python, den Quellcode von verschiedenen Modulen anschauen, um einen Eindruck zu bekommen, wie man komplexe Probleme sinnvoll strukturiert. Wobei da IMHO nicht alle Module so supertoll geschrieben sind. Ein mMn ganz gutes Beispiel ist jedenfalls in pathlib._abc zu finden.
Benutzeravatar
pillmuncher
User
Beiträge: 1529
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Ganz allgemein: Die meisten Design Patterns im Gang of Four Buch sind für Programiersprachen, in denen es keine First Class Funktionen gibt, die man im Programm herumreichen könnte, oder in denen das zwar möglich, aber nicht idiomatisch ist. Und seit es in Python Pattern Matching gibt, braucht man auch keine Double Dispatch Mechanismen mehr selber zu bauen, wie Visitors und dergleichen.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
__blackjack__
User
Beiträge: 13969
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@HarryPotter: Auf Design-Patterns kann man gar nicht verzichten, denn die Muster bestimmte Probleme zu lösen gibt es in jeder Programmiersprache. Die ergeben sich ja einfach dadurch, dass sie zumindest eine gute Lösung sind. Entwurfsmuster werden ja nicht *er*funden, sondern in existierendem Quelltext *ge*funden.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Danke euch!

@snafu: abc kenne ich aber path_abc ist mir neu. Das werde ich mir anschauen. :)

@pillmuncher: Das kenne ich ebenfalls nicht und werde mir das ebenfalls anschauen. :)

@__blackjack__: Da habe ich meinen Beitrag nicht sauber formuliert. Mir ging es nicht darum Design-Patterns zu verwerfen, sondern nur darum, wie man diese am besten für Python umsetzen kann. Quasi welche Patterns besser in first class designed werden sollen und welche (modifiziert) den alten GoF Patterns ähneln. :)
Danke und viele Grüße :)
Sirius3
User
Beiträge: 18245
Registriert: Sonntag 21. Oktober 2012, 17:20

Die meisten dieser Design-Pattern-Seiten klingen für mich stark nach dem Prinzip, ich habe eine Lösung und suche jetzt ein Problem dafür.
Unter https://www.geeksforgeeks.org/singleton ... ete-guide/ wird was von einem "Singleton Pattern in Python - A Complete Guide" geschwafelt, das Beispiel dazu ist aber ein globaler Namespace "CrawlerSingleton", das dazu mißbraucht wird, eine ganze Reihe globaler Variablen zu definieren.
Braucht man in Python das Singleton-Pattern? Nein, es gibt `global`. Sollte man das Nutzen? Nein.
Antworten