Ukrywanie zmiennych (danych) i metod w Pythonie

Ciekawym zagadnieniem w Pythonie, jest ukrywanie zmiennych (danych) i funkcji wewnątrz klasy. Ukrywanie stosujemy wtedy, gdy dane / zmienne / metody, chcemy zabezpieczyć przed dostępem na zewnątrz klasy. Najlepiej posłużyć się przykładem naszych danych osobowych. Przykładowo publicznie możemy nie mieć problemu z udostępnieniem swojego imienia i nazwiska, bo z reguły tak się przedstawiamy i to jest ok. Ale przykładowo swojego numeru telefonu, czy numeru PESEL, już nie chcielibyśmy zdradzać światu, mogłoby to być, nawet niebezpieczne dla nas samych. Na pewno byłoby to gratką dla przestępców.

Przechodząc do konkretów, poniżej przykład ukrywania zmiennych / danych.

Tworzymy klasę „UkrywanieDanych” i wewnątrz deklarujemy zmienne: imie, nazwisko, pesel i telefon. Zmienne pesel i telefon posiadają przedrostek w postaci dwóch podkreślników „_ _”. Dzięki nim, dane nie będą widoczne na zewnątrz klasy. Czyli o ile imię nazwisko wyświetlimy bez problemu:

to już w przypadku numeru pesel dostaniemy błąd:

Żeby wyświetlić pesel, musi stworzyć osobną metodę „danaUkryta1(), przez, którą dostaniemy się używając słowa kluczowego „self”, do zmiennej (danej) pesel „self.__pesel”. A następnie wyświetlimy ją, wywołując tą metodę przez obiekt „ukrywanieDanych” klasy „UkrywanieDanych” operator „.” i metodę „danaUkryta1()”. Ta sama sytuacja dotyczy numeru telefonu. W ten sposób, raz że nie dostaniemy się do naszej danej, to jeszcze możemy stworzyć metodę, która, nie będzie wskazywała na tą daną, czyli takie podwójne zabezpieczenie.

Oprócz ukrywania zmiennych (danych), w Pythonie mamy możliwość ukrycia działania metod. Po co? A mianowicie tym razem, po to, by ukryć przykładowo, jakiś algorytm liczenia, który chcemy by został naszą tajemnicą. Robimy to, przy użyciu metody pośredniej, przez którą będziemy wywoływali działanie innych metod. W poniższym przykładzie stworzyłem dwie metody „metodaUkryta1()” i medodaUkryta2(), których zadaniem jest wyświetlenie ukrytych danych pesel i telefon. Obie metody wywoływane są przez metodę pośrednią „metodaPosrednia()”.

Samo wywołanie metody pośredniej odbywa się przez wywołanie metody obiektu.

Także widzimy wywołane metod, ale nie widzimy, co te metody dokładnie robią. Poniżej przykład użycia ukrywania metod:

Artykuły powiązane: