Привет! В то время как другие языки программирования, такие как Java, позволяют программисту создавать приватные переменные и атрибуты, Python в настоящее время не имеет встроенного приватного типа. Эта техника известна как инкапсуляция. В ней вы пытаетесь скрыть информацию в своих классах от пользователей. Инкапсуляция в Python, как и многие функции языка, очень проста в реализации. Вам просто нужно добавить два символа подчеркивания (_) во время объявления переменной. Как я уже говорил в предыдущей статье «Эксплуатация python приложений», лучший способ понять суть эксплуатации - это увидеть, как она происходит.
Мы создаем класс под названием Character, который не наследует ничего от родительского класса. Мы объявляем три обычные переменные, за которыми следуют три инкапсулированные версии, которые можно определить по символам двойного подчеркивания. Пока что всё хорошо, теперь давайте посмотрим, что произойдет, когда мы попытаемся получить доступ ко всем переменным из вне.
Как мы видим, к обычным атрибутам можно получить доступ из внешнего объекта. Но инкапсулированные версии не доступны. Бинго, мы скрыли наши атрибуты, миссия завершена. А теперь рассмотрим как мы можем получить к ним доступ.
Мы проверяем каталог для нашего объекта (character) и видим, что наши инкапсулированные атрибуты имеют более длинное имя. Вместо __real_age, __real_name, и __real_weight, мы видим _Character__real_age, _Character__real_name, и _Character__real_weight.Теперь нам просто нужно вызвать расширенное имя атрибута для нашего объекта, и вуаля, у нас есть доступ к нашим так называемым, инкапсулированным приватным переменным. Ну, на этом всё. Спасибо за внимание!