NOTATNIK
  • Pages
    about certificates license
  • Categories
    academic general programming software tools list all
  • Archives
    2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 all
  • Tags
News and Notes

Last entry:

[3] Zarządzanie atrybutami obiektów przez właściwości

Published: piątek, 14 marca 2014
By Piotr Czaja

In programming. tags: python project

W projekcie MAULWURF występuje wiele atrybutów obiektów, które przy wprowadzaniu powinny być sprawdzone co do poprawności lub ich wartość jest za każdym razem obliczana na podstawie innych, dostępnych informacji.

Po dłuższym poszukiwaniu właściwej techniki wprowadzenia odpowiedniego zachowania się klas najlepszym rozwiązaniem okazał się protokół właściwości wbudowany w język Python.

Implementacja właściwości następuje przez zdefiniowanie wybranych metod: get, set, del, doc oraz zadeklarowanie właściwości. Deklaracja właściwości to tylko jedna linia: NAZWA = property(getNAZWA, setNAZWA, delNAZWA, "DOKUMENTACJA/KOMENTARZ").

W przypadku dokumentacji w Sphinxie pamiętać należy o tym aby deklarować w autoclass wszystkie pożądane elementy members. W innym przypadku, gdy dołączone są domyślnie wszystkie zmienne może się okazać, że występujące metody get, set, del, doc zmniejszają czytelność. Dla poprawienia czytelności opisu, cały komentarz dokumentacji najlepiej dołączyć do deklaracji właściwości jako opisującej całe zachowanie atrybutu.

Od tego czasu dostęp do atrybutu obiektu możliwy jest w wygodny sposób, taki sam jak do dowolnej zmiennej.

Inne techniki, które służą do obsługi pożądanego zachowania obiektów (np. dekoratory, deskryptory itp.) nie prezentowały się dobrze w omawianym projekcie. Główne wady tych alternatyw to albo odmienne od pożądanego w projekcie zachowanie albo mniejsza czytelność kodu. Po relatywnie długim opisie każdego atrybutu w trakcie jego definiowania największą zaletą jest prosta i nie wymagająca długiego pisania ich obsługa w dalszym wykorzystaniu.

links

Piotr Czaja Projects

social

atom feed Piotr Czaja Authors