1.55M
Категория: ПрограммированиеПрограммирование

DS. Программирование Python. Наследование

1.

DS
Программирование
Python
Наследование

2.

Введение
Тема
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

3.

Введение
Тема
На этом уроке:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

4.

Введение
Тема
Познакомимся с понятием «Наследование» в
контексте ООП
На этом уроке:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

5.

Введение
Тема
Познакомимся с понятием «Наследование» в
контексте ООП
Научимся создавать базовые классы и классы-
На этом уроке:
потомки
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

6.

Введение
Тема
Познакомимся с понятием «Наследование» в
контексте ООП
Научимся создавать базовые классы и классы-
На этом уроке:
потомки
Более детально разберемся с функцией super()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

7.

Введение
Тема
Познакомимся с понятием «Наследование» в
контексте ООП
Научимся создавать базовые классы и классы-
На этом уроке:
потомки
Более детально разберемся с функцией super()
Научимся ее использовать в контексте
наследования.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

8.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

9.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

10.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

11.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

12.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

13.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
Функция isinstance() проверяет, является ли объект экземпляром
указанного класса или классов
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

14.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
Функция isinstance() проверяет, является ли объект экземпляром
указанного класса или классов
В чем заключается суть абстракции как принципа ООП?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

15.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
Функция isinstance() проверяет, является ли объект экземпляром
указанного класса или классов
В чем заключается суть абстракции как принципа ООП?
Задача абстракции – определить действительно нужные поля и
методы класса, отсекая ненужные данные.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

16.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
Функция isinstance() проверяет, является ли объект экземпляром
указанного класса или классов
В чем заключается суть абстракции как принципа ООП?
Задача абстракции – определить действительно нужные поля и
методы класса, отсекая ненужные данные.
В чем заключается суть инкапсуляции как принципа ООП?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

17.

Введение
Тема
Можно ли создавать сразу несколько классов в одном файле с кодом?
Да, можно
Для чего нужна функция super()?
Функция super() нужна для обращения к атрибутам базового класса
Какую роль выполняет функция isinstance()?
Функция isinstance() проверяет, является ли объект экземпляром
указанного класса или классов
В чем заключается суть абстракции как принципа ООП?
Задача абстракции – определить действительно нужные поля и
методы класса, отсекая ненужные данные.
В чем заключается суть инкапсуляции как принципа ООП?
Задача инкапсуляции – объединить поля и методы внутри одного
класса, а также предоставить доступ только к определенным
атрибутам класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

18.

Теория
Введение в наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

19.

Теория
Введение в наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

20.

Теория
Введение в наследование
Наследование – механизм создания новых классов на
основании уже существующих.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

21.

Теория
Введение в наследование
Наследование – механизм создания новых классов на
основании уже существующих.
Родительский класс – класс, от которого ведется
наследование. Такие классы еще называют базовыми или
суперклассами.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

22.

Теория
Введение в наследование
Наследование – механизм создания новых классов на
основании уже существующих.
Родительский класс – класс, от которого ведется
наследование. Такие классы еще называют базовыми или
суперклассами.
Дочерний класс – класс, который наследуется от
родительского. Такие классы еще называют наследниками
или подклассами
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

23.

Теория
Введение в наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

24.

Теория
Введение в наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

25.

Теория
Введение в наследование
С помощью наследования можно создавать дочерние классы на основании
родительских, это позволяет избежать возможного дублирования кода. Все
изменения, внесенные в родительский класс, будут отражены и в дочерних классах.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

26.

Теория
Реализация наследования в Python
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

27.

Теория
Реализация наследования в Python
class BaseHuman:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

28.

Теория
Реализация наследования в Python
class BaseHuman:
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

29.

Теория
Реализация наследования в Python
class BaseHuman:
pass
pass – ключевое слово, использующееся в качестве «заглушки» для будущего кода.
Например, когда мы создаем класс, но пока не хотим писать его реализацию.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

30.

Теория
Реализация наследования в Python
class BaseHuman:
pass
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

31.

Теория
Реализация наследования в Python
class BaseHuman:
pass
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

32.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

33.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

34.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

35.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

36.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

37.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

38.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

39.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

40.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

41.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

42.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
>>> Привет, меня зовут Миша!
Мой возраст: 25
Привет, меня зовут Дима!
Мой возраст: 26
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

43.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
# вывод на экран локальных свойств объектов
print(human.__dict__)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

44.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
# вывод на экран локальных свойств объектов
print(human.__dict__)
print(proger.__dict__)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

45.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
# вывод на экран локальных свойств объектов
print(human.__dict__)
print(proger.__dict__)
>>> {'name': 'Миша', 'age': 25}
{'name': 'Дима', 'age': 26}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

46.

Теория
Реализация наследования в Python
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
# Создаем класс для моделирования программиста
class Programmer(BaseHuman): # Наследуемся от класса BaseHuman
pass
human = BaseHuman(name='Миша', age=25)
# экземпляр класса
proger = Programmer(name='Дима', age=26)
# экземпляр класса
human.introduce() # вызовы метода introduce()
proger.introduce()
# вывод на экран локальных свойств объектов
print(human.__dict__)
print(proger.__dict__)
>>> {'name': 'Миша', 'age': 25}
{'name': 'Дима', 'age': 26}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

47.

Теория
Переопределение атрибутов и функция super()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

48.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

49.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

50.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

51.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

52.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
proger.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

53.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
proger.coding()
>>> Программист Дима сей час пишет код!
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

54.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

55.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
>>> AttributeError: 'BaseHuman' object has no attribute 'coding'
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

56.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
Важно!
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима',
Атрибуты класса наследуютсяage=26)
только от родителя к потомку.
human.coding()
>>> AttributeError: 'BaseHuman' object has no attribute 'coding'
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

57.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

58.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

59.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

60.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
self.age = age
# возраст
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

61.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
self.age = age
# возраст
self.language = language # язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26)
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

62.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
self.age = age
# возраст
self.language = language # язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26, language='Python')
human.coding()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

63.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
self.age = age
# возраст
self.language = language # язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26, language='Python')
print(proger.__dict__) # выводим на экран локальные свойства объект proger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

64.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
self.name = name
# имя
self.age = age
# возраст
self.language = language # язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26, language='Python')
print(proger.__dict__) # выводим на экран локальные свойства объект proger
>>> {'name': 'Дима', 'age': 26, 'language': 'Python'}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

65.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26, language='Python')
print(proger.__dict__) # выводим на экран локальные свойства объект proger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

66.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language
= language
# язык программирования
Функция
super() позволяет
обращаться к методам
родительского класса и
использовать внутри дочернего класса. Чаще всего используется для
human
= BaseHuman(name='Миша',
age=25)
переопределения
методов в дочернем
классе.
proger = Programmer(name='Дима', age=26, language='Python')
print(proger.__dict__) # выводим на экран локальные свойства объект proger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

67.

Теория
Переопределение атрибутов и функция super()
...
# Создаем класс для моделирования программиста
class Programmer(BaseHuman):
def coding(self):
print(f'Программист {self.name} сейчас пишет код!’)
def __init__(self, name, age, language):
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
human = BaseHuman(name='Миша', age=25)
proger = Programmer(name='Дима', age=26, language='Python')
print(proger.__dict__) # выводим на экран локальные свойства объект proger
>>> {'name': 'Дима', 'age': 26, 'language': 'Python'}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

68.

Теория
Многоуровневое наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

69.

Теория
Многоуровневое наследование
BaseHuman
поля класса
методы класса
Programmer
поля класса
методы класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

70.

Теория
Многоуровневое наследование
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

71.

Теория
Многоуровневое наследование
Многоуровневое наследование – тип наследования, когда у
суперкласса есть подкласс, у которого также есть подкласс. В
результате образуется иерархия наследования из 3 или
более уровней.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

72.

Теория
Многоуровневое наследование
BaseHuman
поля класса
методы класса
Programmer
поля класса
методы класса
BackendProgrammer
поля класса
методы класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

73.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

74.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

75.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

76.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

77.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

78.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
>>> {'name': 'Иван', 'age': 27, 'language': 'C++'}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

79.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

80.

Теория
Многоуровневое наследование
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

81.

Теория
Переопределение атрибутов и функция super()
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
backproger.walk()
# вызов метода walk() для объекта backproger
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

82.

Теория
Переопределение атрибутов и функция super()
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
# Создаем класс для моделирования программиста (итоговая версия)
class Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
backproger.walk()
# вызов метода walk() для объекта backproger
>>> Иван идет на прогулку.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

83.

Теория
Переопределение атрибутов и функция super()
class BaseHuman:
def __init__(self, name, age): # инициализатор класса
self.name = name
# имя
self.age = age
# возраст
def introduce(self):
# вывод информацию об имени и возрасте
print(f'Привет, меня зовут {self.name}!')
print(f'Мой возраст: {self.age}')
def walk(self):
# информирование, что человек идет на прогулку
print(f'{self.name} идет на прогулку.')
При
многоуровневом
наследовании
методы
вызываются
согласно построенной
# Создаем класс для моделирования
программиста
(итоговая
версия)
иерархии
классов.
class
Programmer(BaseHuman):
def __init__(self, name, age, language): # инициализатор класса
super().__init__(name, age) # вызываем метод __init__() из базового класса
self.language = language
# язык программирования
def coding(self):
print(f'Программист {self.name} сейчас пишет код!')
class BackendProgrammer(Programmer):
pass
# экземпляр класса BackendProgrammer
backproger = BackendProgrammer(name='Иван', age=27, language='C++')
print(backproger.__dict__) # выводим на экран локальные свойства объект backproger
backproger.walk()
# вызов метода walk() для объекта backproger
>>> Иван идет на прогулку.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

84.

Теория
Функции issubclass() и isinstance()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

85.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

86.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
>>> True
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

87.

Теория
Функции issubclass() и isinstance()
issubclass() – функция, позволяющая проверить, является ли класс наследником
другого класса, возвращая True или False. Учитывает иерархию наследования
классов.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

88.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

89.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
>>> True
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

90.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

91.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
>>> <class '__main__.BaseHuman'>
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

92.

Теория
Функции issubclass() и isinstance()
issubclass() – функция, позволяющая проверить, является ли класс наследником
другого класса, возвращая True или False. Учитывает иерархию наследования
классов.
__base__ - атрибут, возвращающий базовый класс для указанного класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

93.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

94.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
>>> <<class 'object'>
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

95.

Теория
Многоуровневое наследование
object
поля класса
методы класса
BaseHuman
поля класса
методы класса
Programmer
поля класса
методы класса
BackendProgrammer
поля класса
методы класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

96.

Теория
Функции issubclass() и isinstance()
issubclass() – функция, позволяющая проверить, является ли класс наследником
другого класса, возвращая True или False. Учитывает иерархию наследования
классов.
__base__ – атрибут, возвращающий базовый класс для указанного класса
object – класс, являющийся базовым для всех классов в языке Python.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

97.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

98.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

99.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
>>> True
True
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

100.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
# проверяем, что proger является экземпляром класса Programmer
print(isinstance(proger, Programmer))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

101.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
# проверяем, что proger является экземпляром класса Programmer
print(isinstance(proger, Programmer))
>>> True
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

102.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
# проверяем, что proger является экземпляром класса Programmer
print(isinstance(proger, Programmer))
# проверяем, что proger является экземпляром класса BaseHuman
print(isinstance(proger, BaseHuman))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

103.

Теория
Функции issubclass() и isinstance()
...
# проверяем, что класс BackendProgrammer является подклассом для Programmer
print(issubclass(BackendProgrammer, Programmer))
# проверяем, что класс BackendProgrammer является подклассом для BaseHuman
print(issubclass(BackendProgrammer, BaseHuman))
# выводим на экран базовый класс для класса Programmer
print(Programmer.__base__)
# выводим на экран базовый класс для класса BaseHuman
print(BaseHuman.__base__)
# проверяем, что Programmer и BackendProgrammer являются подклассами для object
print(issubclass(Programmer, object))
print(issubclass(BackendProgrammer, object))
# проверяем, что proger является экземпляром класса Programmer
print(isinstance(proger, Programmer))
# проверяем, что proger является экземпляром класса BaseHuman
print(isinstance(proger, BaseHuman))
>>> True
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

104.

Теория
Функции issubclass() и isinstance()
issubclass() – функция, позволяющая проверить, является ли класс наследником
другого класса, возвращая True или False. Учитывает иерархию наследования
классов.
__base__ – атрибут, возвращающий базовый класс для указанного класса
object – класс, являющийся базовым для всех классов в языке Python.
isinstance() – функция, позволяющая проверить, является ли объект прямым или
косвенным экземпляром другого класса, возвращая True или False. Учитывает
иерархию наследования классов.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

105.

ИТОГ
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

106.

ИТОГ
В чем заключается главная задача наследования?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

107.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

108.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

109.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

110.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

111.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
Многоуровневое наследование - тип наследования, когда у суперкласса
есть подкласс, у которого также есть подкласс. В результате образуется
иерархия наследования из 3 или более уровней.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

112.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
Многоуровневое наследование - тип наследования, когда у суперкласса
есть подкласс, у которого также есть подкласс. В результате образуется
иерархия наследования из 3 или более уровней.
Для чего нужна функция issubclass()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

113.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
Многоуровневое наследование - тип наследования, когда у суперкласса
есть подкласс, у которого также есть подкласс. В результате образуется
иерархия наследования из 3 или более уровней.
Для чего нужна функция issubclass()?
Функция issubclass() позволяет узнать, является ли класс наследником
другого класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

114.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
Многоуровневое наследование - тип наследования, когда у суперкласса
есть подкласс, у которого также есть подкласс. В результате образуется
иерархия наследования из 3 или более уровней.
Для чего нужна функция issubclass()?
Функция issubclass() позволяет узнать, является ли класс наследником
другого класса
Что можно узнать с помощью атрибута __base__?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

115.

ИТОГ
В чем заключается главная задача наследования?
Главная задача наследования – уменьшение дублирования кода и создание
удобной для использования иерархии классов.
С помощью какой функции можно удобно переопределять метод __init__()?
С помощью функции super()
Что такое многоуровневое наследование?
Многоуровневое наследование - тип наследования, когда у суперкласса
есть подкласс, у которого также есть подкласс. В результате образуется
иерархия наследования из 3 или более уровней.
Для чего нужна функция issubclass()?
Функция issubclass() позволяет узнать, является ли класс наследником
другого класса
Что можно узнать с помощью атрибута __base__?
Атрибут __base__ позволяет узнать базовый класс для указанного класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании

116.

DS
Программирование
Python
Спасибо за внимание!
English     Русский Правила