Wpis z mikrobloga

Cześć,

W Pythonie jest taka umowna zasada że prywatne atrybuty klasy możemy zapisać z dwiema podłogami, tak samo chronione atrybuty z jedną podłogą - i faktycznie środowisko nie pozwoli mi użyć metody klasy poza nią, jeśli nazwę poprzedziłem __.

Pytanie do was bo ja nie mogę znaleźć słusznej odpowiedzi, czy powinno się tego używać? W Pythonie hermetyzacja jako tako nie istnieje, czy jeśli atrybut klasy jest w moim mniemaniu private/protected to powinienem zapisywać to z podkreślnikami, czy jednak wprowadza to większy zamęt w czytelności kodu i powinienem z tego zrezygnować?
Jest to dla mnie dosyć ważne ponieważ hobbystycznie kończę pisać bardzo wielki projekt który chcę wrzucić na githuba, zajmuję się teraz refactoringiem kodu i nie wiem co mam myśleć z tymi podkreślnikami, czy dla osoby z zewnątrz taki sposób jest bardziej czytelny czy mniej.

#python #naukaprogramowania
  • 10
faktycznie środowisko nie pozwoli mi użyć metody klasy poza nią, jeśli nazwę poprzedziłem _.

@imthehighestintheroom: bo to jest możliwe, ale specjalnie utrudnione. Żeby użyć metody czy atrybutu z nazwą zaczynającą się od trzeba to zrobić w specjalny sposób: .NazwaKlasy__

A co do pytania: każdy kod w Pythonie jaki kiedykolwiek widziałem, korzystał z tego stylu.

to że środowisko nie pozwoli Ci użyć takiej metody to nie znaczy, że się nie
@imthehighestintheroom: tak, imo warto uzywac nawet jeśli nie jest to wymuszane przez interpreter, ale istnieje konwencja i narzedzia to wspierają.

W hermetyzacji nie chodzi o to, zeby uniemozliwic dostep do czegos (patrz Java i mechanizmy refleksji, ktore pozwalaja obejsc hermetyzacje). Przede wszystkim chodzi o ograniczenie ilosci informacji dla klienta kodu i nakierowanie na uzycie interejsu dlań przeznaczonego