Pytanie do ludzi programujących w #python, czy w swoim kodzie korzystacie z dekoratorów?
Przerabiam kolejny z rzędu artykuł o dekoratorach i ciężko mi pojąć zasadność ich użycia. Może to kwestia złych tutoriali i artykułów, może przerobienie jakiegoś bardziej życiowego przypadku ułatwiłoby mi wykorzystanie takiej funkcjonalności. Ktoś może wytłumaczyć w sposób "jak dla tłumana" na jakimś życiowym przypadku sens zastosowania dekoratorów?
@linuxuser: korzystam. Czasem się przydają, czasem piszę własne. Pierwszy przykład z prawdziwego życia, jaki mi przychodzi do głowy:
kolorki w terminalu - używa się do tego specjalnych ciągów znaków, które magicznie się zmieniają na kolory jeśli urządzeniem wyjściowym rzeczywiście jest terminal
mam już napisane funkcje, które mi opakowują tekst w te ciągi znaków
ale w przypadku gdy wyjście przekazuję do jakiegoś pipe'a albo przekierowuję do pliku, to te ciągi znaków są
@linuxuser: a w ogólności to nie warto sobie zaprzątać głowy, czy coś co istnieje jest przydatne czy nie (skoro istnieje, to pewnie jest xD). Warto wiedzieć że coś jest, a sytuacja w której ci się przypomni "o, tu mógłbym użyć dekoratorów/context managera/czegokolwiek" przyjdzie sama.
@linuxuser: Ja napisałem sobie kiedyś kilku linijkowy dekorator który zapisywał do logów czas wykonania funkcji - w ten sposób miałem dane "z produkcji" dla udekorowanych metod a nie z testów czy narzędzi do profilowania.
W aktualnej robocie gdzie z racji na rozmiar projektu pewne rzeczy były pisane w technologiach własnych albo w nietypowym stacku technologicznym dekoratory służą do walidacji uprawnień w wybranych miejscach - sprawdzają zawartość nagłówków, aktualność sesji, uprawnienia itd.
@Datun: miałem tak kiedyś w projekcie ( ͡°ʖ̯͡°) fajnie się wszystko ładowało automatycznie, ale i tak trzeba było nadpisywać ścieżki przy dodawaniu parametrów do URLa :/
@linuxuser: tak na przykład dekorator odmierzający czas wykonania danej funkcji zwracajacy ładny wynik, dekorator dostępu do czegoś po sprawdzeniu czy jest sie adminem, testy automatyczne w behave gdzie też są dekoratory i w łatwy sposób można tworzyć kroki, sporo zastosowań, głównie upraszczanie składni, i zapobieganie przepisywania tego samego kodu
Ten aktor i postać Ghula wg mnie nosił cały serial na barkach. Całość jest bardzo dobra ale jak pojawia się Goggins na ekranie, to zaczyna być jeszcze lepiej. #fallout #seriale
Przerabiam kolejny z rzędu artykuł o dekoratorach i ciężko mi pojąć zasadność ich użycia. Może to kwestia złych tutoriali i artykułów, może przerobienie jakiegoś bardziej życiowego przypadku ułatwiłoby mi wykorzystanie takiej funkcjonalności. Ktoś może wytłumaczyć w sposób "jak dla tłumana" na jakimś życiowym przypadku sens zastosowania dekoratorów?
kolorki w terminalu - używa się do tego specjalnych ciągów znaków, które magicznie się zmieniają na kolory jeśli urządzeniem wyjściowym rzeczywiście jest terminal
mam już napisane funkcje, które mi opakowują tekst w te ciągi znaków
ale w przypadku gdy wyjście przekazuję do jakiegoś pipe'a albo przekierowuję do pliku, to te ciągi znaków są
@staticmethod
,@property
- też przydatne rzeczyW aktualnej robocie gdzie z racji na rozmiar projektu pewne rzeczy były pisane w technologiach własnych albo w nietypowym stacku technologicznym dekoratory służą do walidacji uprawnień w wybranych miejscach - sprawdzają zawartość nagłówków, aktualność sesji, uprawnienia itd.
@login_required
( ͡° ͜ʖ ͡°)@s3b4: a możliwe, na razie jeszcze Flaska nie ruszałem więc się nie wypowiem, ale pewnie tak będzie jak mówisz :)
app.add_url_route
@linuxuser: tak