linuxuser
linuxuser
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?
  • Najlepsze
  • Wszystkie komentarze
Krasiu
zwei
zwei
1
@zwei: co tam jeszcze, standardowe dekoratory @staticmethod, @property - też przydatne rzeczy
linuxuser
linuxuser
linuxuser Autor
1
@s3b4: to chyba najprędzej nastąpi w moim przypadku, bo po ogarnięciu podstaw pythona będę chciał rzucić się na Flaska
s3b4
s3b4
1
@linuxuser: i będziesz najpewniej korzystał z flask-login, który ma @login_required ( ͡° ͜ʖ ͡°)
D.....n
D.....n
@linuxuser: we Flasku to nawet do Hello worlda potrzebujesz dekoratora.
zwei
zwei
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...
zwei
zwei
0
@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.
Ilythiiri
@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
s3b4
s3b4
0
@linuxuser: najbardziej życiowy przykład? sprawdzanie uprawnień czy zalogowania - dekorator zwróci 401 zamiast wykonywać funkcję. proste i użyteczne
linuxuser
linuxuser
linuxuser Autor
0
będziesz najpewniej korzystał z flask-login, który ma @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 :)
s3b4
s3b4
0
@Datun: chyba że dodajesz przez app.add_url_route
D.....n
D.....n
@s3b4: niby tak, ale nikt tak nie robi :)
s3b4
s3b4
0
@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 :/
blend
blend
0
@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
GlenPL
Pytanie do ludzi programujących w #python, czy w swoim kodzie korzystacie z dekoratorów?


@linuxuser: tak