Wpis z mikrobloga

  • 3
#programowanie #python ma ktoś może jakaś fajna prezentację o wzorcach projektowych lub dobrych praktykach w programowaniu w pythonie? Albo ogólnie?
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@waSP_: Z wzorcami projektowymi to w Pythonie raczej ciężko. Cały katalog GoF i kolejne sprowadzają się do tego, żeby programować pod kątem interfejsów, a nie implementacji, gdzie pojęcie interfejsów jest w Pythonie obce. Jeśli chcesz wiedzieć, jak pisać zgodnie z duchem Pythona, poczytaj o idiomatic Python
  • Odpowiedz
@tenji: A możesz podać przykłady konkretnych wzorców projektowych używanych w Pythonie? Bo z tych najpopularniejszych to:

* Strategia średnio (brak interfejsów)
* Singleton, niby się da, ale żeby działał jak prawdziwy singleton, musisz korzystać z metaklas
* Wszelkie fabryki też niby można, ale znowu brak interfejsów mocno ogranicza (więc najczęściej robi się proste fabryki bazujące na słownikach)
* Metoda szablonowa - stosuje się powszechnie przy
  • Odpowiedz
@dog_meat: Chyba cos ci sie pomylilo. Wzorce projektowe sie stosuje, nie sa zapisane w jezyku..W jednych jezykach stosuje sie je latwiej i czesciej w innych trudniej i rzadziej.

Strategia średnio (brak interfejsów)

Chociazby w sqlalchemy przy wyborze implementacji silnika

Singleton, niby się da, ale żeby działał jak prawdziwy singleton, musisz korzystać
  • Odpowiedz
@tenji: to że się da, nie znaczy że używa się tego powszechnie. Raczej na codzień mało kto tworzy metaklasy.
Jeśli chodzi o fabryki, to chyba doskonale wiesz czym się różni np. "fabryka" oparta na słowniku od wzorca fabryka abstrakcyjna.

A jeśli chodzi o interfejsy, to czy tego chcesz, czy nie to właśnie na nich opiera się większość wzorców (przynajmniej GoF i Fowlera) i niejednokrotnie powtarzali: programuj interfejsy, nie implementacje.

I
  • Odpowiedz
Oczywiście możesz próbować zrobić interfejsy, korzystając z klas abstrakcyjnych bez implementacji, ale to już chyba nie jest do końca po drodze z filozofią Pythona
  • Odpowiedz
@dog_meat: @Budek24: nie zrozumiałeś mnie. Ja wiem, że w Pythonie są klasy abstrakcyjne (jest nawet moduł abc) . A niezgodne z filozofią Pythona byłoby tworzenie pustych klas abstrakcyjnych bez żadnej zaimplementowanej metody w roli interfejsów
  • Odpowiedz