#18 - Наследование, инкапсуляция, полиморфизм

#18 - Наследование, инкапсуляция, полиморфизм

В этом уроке мы разберем основные моменты ООП в языке Python, а именно наследование, инкапсуляция, полиморфизм. Эти три понятия являются основой ООП, поэтому их изучить просто необходимо!

Видеоурок

Что такое наследование, инкапсуляция и полиморфизм мы уже рассказывали в предыдущем уроке, поэтому особого внимания сейчас на этом концентрировать не будем.

Наследование

Начнем с самого первого, а именно с наследования. Наследование позволяет нам создать второй класс, который будет наследовать все методы, переменные и конструкторы нашего главного класса. Это очень удобно, так как мы можем использовать все необходимые основные методы, но при этом добавить свои собственные, которые будут нужны только лишь в классе наследнике. Для создания наследования используется следующая структура:
class Cars:
    wheels = 4 # Общее значение для всех объектов,
               # так как все машины имеют колеса
		
class BMW (Cars):
    is_m_serias = true # Является ли модель "М" серии?
                       # Переменная нужна только в классе BMW

Инкапсуляция

Инкапсуляция позволяет нам ограничить доступ к какой-либо функции в классе. Благодаря этому злоумышленники или же мы сами не сможем случайно или намерено вызвать или изменить метод.
class Some:
     def _printWords(self):
          print ("Попробуй меня вызвать")

obj = Some()
obj._printWords() # Вызов функции ничего не даст

При помощи двойного подчеркивания эффект защиты усиливается, поэтому вызвать функцию вообще будет невозможным.

Полиморфизм

Полиморфизм позволяет нам изменять функции в классах наследниках.
class Cars:
    def nothing(self): # Пустая функция
        pass
		
class BMW (Cars):
    def nothing(self, word):
        print (word + "!") # Функция теперь будет работать по новому
        
a = BMW()
a.nothing("Some")

Исходный код

Классы и объекты
class Person:
	name = "Ivan"
	age = 10
	
	def __set(self, name, age):
		self.name = name
		self.age = age
		
class Student (Person):
	course = 1

igor = Student ()
igor._Person__set ("Igor", 19)
igor.course = 2
print (igor.course)

vlad = Person ()
vlad._Person__set ("Влад", 25)
print (vlad.name + " " + str(vlad.age))

ivan = Person ()
ivan._Person__set ("Иван", 56)
print (ivan.age)

Онлайн редактор кода

Загрузка...

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Создание игры на Python 3 с PyGame
5 уроков
Уроки Python Django / Создание сайта
12 уроков
Изучение Python до профи / Основы, Django, TKinter