Слайд 2Инкапсуляция
По умолчанию атрибуты в классах являются общедоступными, а это значит, что из
любого места программы мы можем получить атрибут объекта и изменить его
Слайд 3Инкапсуляция
Инкапсуляция является фундаментальной концепцией объектно-ориентированного программирования. Она предотвращает прямой доступ к атрибутам
объект из вызывающего кода.
Касательно инкапсуляции непосредственно в языке программирования Python скрыть атрибуты класса можно сделав их приватными или закрытыми и ограничив доступ к ним через специальные методы, которые еще называются свойствами.
Слайд 4Инкапсуляция
Для создания приватного атрибута в начале его наименования ставится двойной прочерк: self.__name.
К такому атрибуту мы сможем обратиться только из того же класса. Но не сможем обратиться вне этого класса.
Меняем на
Данный метод еще часто называют геттер или аксессор.
Слайд 5Здесь мы уже можем решить в зависимости от условий, надо ли переустанавливать
возраст. Данный метод еще называют сеттер или мьютейтор (mutator).
Слайд 6Аннотации свойств
Для создания свойства-геттера над свойством ставится аннотация @property.
Для создания свойства-сеттера над
свойством устанавливается аннотация имя_свойства_геттера.setter.
Слайд 9Наследование
Наследование позволяет создавать новый класс на основе уже существующего класса
Подкласс наследует от
суперкласса все публичные атрибуты и методы.
Суперкласс еще называется базовым (base class) или родительским (parent class), а подкласс - производным (derived class) или дочерним (child class).
Слайд 11Наследование
Класс Employee полностью перенимает функционал класса Person и в дополнении к нему
добавляет метод details().
Стоит обратить внимание, что для Employee доступны через ключевое слово self все методы и атрибуты класса Person, кроме закрытых атрибутов типа __name или __age.
При создании объекта Employee мы фактически используем конструктор класса Person. И кроме того, у этого объекта мы можем вызвать все методы класса Person.
Слайд 12Полиморфизм
Предполагает способность к изменению функционала, унаследованного от базового класса.