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.
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
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:
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.
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.
@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 city's central computer told you? R2D2, you know better than to trust a strange computer!” — C3PO
@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.
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.