Задание 1. Сопоставьте принципы ООП
Условие: сопоставьте понятие с его описанием.
- 1. Наследование
- 2. Полиморфизм
- 3. Инкапсуляция
- 4. Абстракция
- a. Скрытие внутренней реализации и предоставление только нужного интерфейса
- b. Поведение зависит от конкретного подкласса
- c. Выделение общих характеристик для дальнейшей реализации
- d. Повторное использование кода из базового класса
Что должно получиться: правильное соответствие цифр и букв.
Задание 2. Что делает super()?
Условие: выберите верный вариант.
- a. Обращается к родителю по имени напрямую.
- b. Создаёт экземпляр родительского класса.
- c. Автоматически вызывает метод родителя, учитывая порядок наследования.
- d. Удаляет метод родителя.
Задание 3. Результат isinstance()
Условие: что выведет код и почему?
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(isinstance(d, Animal))
Задание 4. Найдите ошибку
Условие: найдите и объясните ошибку.
class Book:
@classmethod
def info():
print("Книга")
Задание 5. Исправьте код
Условие: перепишите Student, чтобы он использовал super() и не дублировал инициализацию имени.
class Person:
def __init__(self, name: str) -> None:
self.name = name
class Student(Person):
def __init__(self, name: str, course: int) -> None:
self.name = name # дублирование
self.course = course
Задание 6. Иерархия Person → Student / Teacher
Условие: создайте иерархию классов.
-
Класс
Person. У каждого человека есть имя. Методintroduce()выводит:Hello, my name is Alice. -
Класс
Studentна основеPerson. У студента есть имя и номер курса. Методintroduce()сначала выводит базовое приветствие, затем:I'm on course 2. -
Класс
Teacherна основеPerson. У преподавателя есть имя и предмет. Методintroduce()выводит:Hello, I am professor Bob. My subject is Mathematics. -
Создайте список, содержащий
StudentиTeacher, и вызовите у всехintroduce().
Пример вывода:
Hello, my name is Alice.
I'm on course 2.
Hello, I am professor Bob.
My subject is Mathematics.