• Nasze prace
  • E-commerce
    • Magento
    • Outsourcing Magento
    • Prestashop
  • Co robimy
    • Systemy dedykowane
    • Sklepy internetowe
    • Aplikacje
    • Hosting
  • Case studies
  • O nas
  • Kariera
  • Blog
  • Kontakt
IDEA07
UE

Blog Idea07


Programowanie

Udekorować pythona

14lip2015
Dekoratory – temat często spotykany na forach internetowych i w książkach związanych z programowaniem w języku python. Początkujący programiści zwykle mają z nim problem, ale nawet część zaawansowanych programistów piszących w pythonie od dłuższego czasu, nie wie skąd w pythonie wzięły się dekoratory. Zacznijmy od małego wstępu. Za wikipedią: “Dekorator – wzorzec projektowy należący do grupy wzorców strukturalnych. Pozwala na dodanie nowej funkcji do istniejących klas dynamicznie podczas działania programu. Wzorzec dekoratora polega na opakowaniu oryginalnej klasy w nową klasę "dekorującą". Zwykle przekazuje się oryginalny obiekt jako parametr konstruktora dekoratora, metody dekoratora wywołują metody oryginalnego obiektu i dodatkowo implementują nową funkcję.” Brzmi to dość skomplikowanie, jednak po głębszej analizie wszystko okazuje się jasne. Dekorator jest elementram rozszerzającym klasę (funkcję) o nowe funkcjonalności. Najprostrzym do zobrazowania przykładem jest sprawdzanie czy użytkownik jest zalogowany do systemu. Zamiast sprawdzać w każdej wywoływanej funkcji czy użytkownik jest zalogowany, możemy wykorzystać do tego dekorator I rozszerzyć funkcjonalność o sprawdzanie czy użytkownik jest poprawnie zalogowany. Z takimi dekoratorami można spotkać się często w webowych frameworkach np. Flask, Django. Jak wygląda dekorowanie w pythonie? Dekorowanie funkcji w pythonie sprowadza się do “opakowania” jej w inną funkcję. Funkcje w pythonie są obiektami pierwszego rzędu. Oznacza to, że można traktować je jak, każde inne obiekty I przesyłać np. w argumentach innych funkcji. Przykład:
def funkcja_dekorujaca(funkcja_dekorowana): #definicja dekoratora
    funkcja_dekorowana.atrybut = True
    return funkcja_dekorowana
Powyżej zdefiniowaliśmy dekorator. Dla każdej funkcji, na której go użyjemy atrybut “atrybut' zostanie ustawiony na True. Przykład użycia dekoratora:
def funkcja():
    return 1

funkcja = funkcja_dekorujaca(funkcja) # użycie dekoratora
Nadszedł czas na tak zwany lukier składniowy. Poniżej przedstawiono zabieg pozwalający bardzo szybko I przyjemnie dekorować nowe funkcje.
@funkcja_dekorujaca
def funkcja():
    return 1
Powyższy zapis realizuje dokładnie to samo zadanie co pierwszy przykład użycia dekoratora. Mam nadzieję, że teraz tajemnicze zapisy nad funkcjami poprzedzone małpami staną się zrozumiałe dla początkujących programistów frameworków webowych, gdzie ostatnimi czasy dekoratory pojawiają się na każdym kroku.

Sławomir Wawrzyniak

Tweetnij

    Szukaj


    Kategorie

    • E-commerce
    • ERP
    • Inspiracje
    • Magento
    • PrestaShop
    • Programowanie

    Popularne

    • Programowanie
      Udekorować pythona
    • Inspiracje
      Jak stworzyć tekst pozycjonujący?
    • E-commerce ERP
      Platformy e-commerce B2B – dlaczego warto?

Cenimy sobie dobry kontakt

Masz pytanie lub chcesz umówić się na prezentację? Napisz do nas.

Znajdź nas
  • Facebook
  • Behance
  • LinkedIn
  • Twitter
  • YouTube

© Copyright 2021 by IDEA commerce. Wszystkie prawa zastrzeżone

Polityka prywatności Mapa strony