Инкапсуляция — вносит дополнительный уровень безопасности в разрабатываемую программу с использованием объектно-ориентированного подхода.
Разнообразие определений, сложно привести к общему знаменателю. В целом можно выделить два подхода к значению этого термина. Инкапсуляция может быть рассмотрена как:
- связь данных с методами которые этими данными управляют, т.е. помещаем переменные и функции в группу, логически объединенную одной тематикой.
- набор инструментов для управления доступом к данным или методам которые управляют этими данными, т.е. ограничить доступ к методам и переменным, предотвращая изменения вне класса.
Пример: Определим класс Product, затем используем метод __init__ для хранения атрибутов (значений) о товаре, таких как наименование продукта, цена, скидка количество товара на складе и возможная максимальная скидка. Так как python рассматривает __max_discount как приватный атрибут, его изменить вне класса не получится.
Инкапсуляция является скорее условностью и не обеспечивает ограниченный доступ к переменным и методам класса, так как данные которые должны быть скрыты, на самом деле могут быть прочитаны. Мы должны сами заботиться об их сохранности.
Наследование — способ создания нового класса на основе старого. Позволяя вынести общий функционал в класс-родитель, а в производных классах (дочерних) программировать только то, что их отличает от родителя. Из наследника можно получить доступ к оригинальным методам класса-родителя через вызов super().
Пример: От класса Product унаследуем класс Phone и Car и внутри новых классов опишем только то, что отличает их от основного класса Product.
Полиморфизм — когда одинаковые методы разных классов могут работать по-разному (выполнять разные действия). Полиморфизм дает возможность реализовывать единые интерфейсы для объектов различных классов. Например, разные классы могут предусматривать различный способ вывода той или иной информации объектов. Одинаковое название метода вывода позволит не запутать программу, сделать код более ясным.
Пример: Два разных класса содержат метод get_color(). В зависимости от того, к какому объекту какого класса применяется метод get_color(), выполняется тот или иной вывод.
Предыдущие статьи по изучению языка программирования Python3.
15. Введение в объектно ориентированное программирование в Python3.
14. Работа с датой и временем в Python3.
13. Использование try и except в Python3.
12. Работа с файлами в Python3.
11. Как правильно писать код в Python3.
8. Цикл for и цикл while в Python3.
7. Условный оператор if в Python3.
6. Словари и работа с ними в Python3.
5. Основа работы со списками в Python3.
3. Переменные в языке Python 3 и для чего они нужны.