Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: ##python.pl na FreeNode - ogarniamy zlot na Mazurach lub Podlasiu :>?
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Wzorce projektowe a Python  (Przeczytany 8597 razy)
« : 13:26 22/12/09 »
m15ch4 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 5


Witam!

Ponieważ ostatnio interesuję się wzorcami projektowymi opisywanymi m.in. w książce "Wzorce projektowe" (Helm, Johnson, Vlissides, Gamma) oraz ich zastosowaniem przy programowaniu w Pythonie chciałbym aby na ten temat wypowiedzieli się właśnie programiści tego języka.

W szczególności interesuje mnie czy implementacja wzorców proponowana przez "Bandę czterech" jest możliwa i zasadna przy programowaniu w Pythonie, a jeśli tak to czy stosujecie te wzorce.

Moje wątpliwości wynikają z tego, że większość rozwiązań wykorzystuje klasy abstrakcyjne których zgodnie z dokumentacją Pythona nie ma w nim.
Zapisane
« Odpowiedz #1 : 14:26 22/12/09 »
riklaunim Offline
Advanced Python User

Zobacz profil WWW
**

Reputacja: 34
Płeć: Mężczyzna
Wiadomości: 251


Python nie kolekcjonuje wzorców projektowych. Poza tym co język to inna specyfika i przez to lepsze stają się różne wzorce.
Zapisane

« Odpowiedz #2 : 14:48 22/12/09 »
m15ch4 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 5



Python nie kolekcjonuje wzorców projektowych. Poza tym co język to inna specyfika i przez to lepsze stają się różne wzorce.

Rozumiem, że pisząc Python masz na myśli Społeczność Pythona?
Zapisane
« Odpowiedz #3 : 15:00 22/12/09 »
DimmuR Offline
Moderator Globalny
Professional Python User

Zobacz profil
*****

Reputacja: 88
Płeć: Mężczyzna
Wiadomości: 427


Co prawda nie mam doświadczenia z wzorcami projektowymi ale znalazłem coś co może się przydać: Wzorce w dynamicznych językach programowania.
Zapisane

Stowarzyszenie Polska Grupa Użytkowników Pythona - plpug.org
« Odpowiedz #4 : 15:40 22/12/09 »
kamykadze Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Płeć: Mężczyzna
Wiadomości: 41


Większość wzorców opiera się na relacjach kompozycji oraz szeroko rozumianego dziedziczenia.

W Pythonie obie relacje istnieją, więc moim zdaniem można ze wzorców korzystać.
Problemem może być czasem luzackie podejście Pythona, w którym tak wiele rzeczy można robić (nawet do prywatnego elementu człowiek się dobierze, jeśli wie jak ...), a liczne trudno wymusić, ale to nie jest chyba jakiś kosmiczny problem...

Fajna sztuczka z abstrakcyjnością:

http://norvig.com/python-iaq.html

Pytanie: Can you implement abstract classes in Python in 0 lines of code? Or 4?
Zapisane
« Odpowiedz #5 : 16:01 22/12/09 »
jell Offline
Administrator
Expert Python User

Zobacz profil
*****

Reputacja: 66
Płeć: Mężczyzna
Wiadomości: 586


Ktoś na IRCu podesłał bardzo dobrą odpowiedź na pytanie postawione w pierwszym poście:

http://docs.google.com/viewer?url=http://us.pycon.org/media/2009/talkdata/PyCon2009/051/The_lack_of_Design_Patters_on_Python.pdf
Zapisane

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep
« Odpowiedz #6 : 17:28 22/12/09 »
LQC Offline
Python God

Zobacz profil
*****

Reputacja: 226
Płeć: Mężczyzna
Wiadomości: 1000


Ja polecam referat Alexa Martelli'ego:

http://www.lecturefox.com/blog/python-design-patterns-by-alex-martelli

Podsumowując: część wzorców opisanych przez bandę czworga jest niejako wbudowana w język, weźmy np. fabrykę:

Każda klasa jest z definicji fabryką produkującą swoje instancje za pomocą metody __new__. Definiowanie oddzielnej klasy dla fabryki (jak w Java) jest niepotrzebne - w zupełności wystarczy zwykła funkcja.

Część jest zbędna, a część pozostaje taka sama.

@kamykadze
Może wygląda fajnie, ale nie robi tego co powinno w przeciwieństwie do dekoratora @abstractmethod:

http://docs.python.org/library/abc.html
Zapisane

Dołącz do projektu Wolnelektury.pl na github (open-source, pro publico bono)
« Odpowiedz #7 : 11:08 23/12/09 »
m15ch4 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 5


Przede wszystkim dziękuję za konkretne odpowiedzi.

Szczególnie spodobał mi się wykład do którego link podesłał LQC. Co prawda muszę go obejrzeć jeszcze parę razy żeby wszystko zrozumieć, ale myślę, że można go z czystym sumieniem polecić wszystkim zainteresowanym tematem wzorców projektowych.
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot