@jofumi

Как реализуют инкапсуляцию в python?

В общем во многих языках программирования инкапсуляция реализуется очень явно, например в С# есть protected, private, и т.д. Пайтон же также является ООП языком программирования, но по поводу инкапсуляции видел только одну не очень вызывающую доверие статейку, где указывалось, что _(одно подчеркивание) - это как бы значит protected( но только на словах), а __(два подчеркивания) указывает на то, что метод или переменная - private(хотя и можно с некоторой несложной манипуляцией этот метод достать извне). Так ли это? И еще в C# инкапсулируют всё, что только можно, а переменные класса можно достать лишь геттерами, задать сеттерами(по правилам хорошего тона), но я просматривая разные программы на гитхабе и проч не видел не только этих геттеров, но и использования подчеркивания в принципе(кроме там if __name__ == "__main__": ). Инкапсулирование вообще используют на Пайтоне, и как правильно её реализовать?
  • Вопрос задан
  • 245 просмотров
Решения вопроса 2
hack504
@hack504
Правильнее говорить "Модификаторы доступа", т.к. Инкапсуляция это своего рода механизм, который имеет более обширное понятие, чем модификаторы доступа - protected, private, public.

По теме: реализуются через декораторы https://habr.com/ru/post/443192/
Ответ написан
Guest007
@Guest007
Django, Python, Linux и всё такое...
Камрад hack504 хорошо направил. Модификаторы доступа.
Просто прими тот факт, что это интерпретируемый язык и прятать в нём что-то - дело неблагодарное.
Если тебе надо скрыть реализацию каких-то внутренних механизмов создаваемой тобой библиотеки, то тут только положиться на джентльменские соглашения с подчёркиваниями и обеспечить хорошую документацию чтобы не было необходимости залезать в потроха.
Если ты просто что-то пишешь (конечный продукт) - просто пиши. Не заморачивайся с этим, пока не возникнет прямой необходимости.

Если же пишешь что-то шибко коммерческое и хочешь реально скрыть реализацию, вот чтоб прям ну никак не посмотреть, что там в потрохах - пиши на другом языке. Например всю машинерию на C, а на python только обвязку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы