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

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Этот модуль посвящен одной из ключевых концепций объектно-ориентированного программирования в Python — Наследованию. Вы научитесь создавать дочерние классы, расширять функционал родительских классов, переопределять методы и использовать функцию super().

Тренажер включает задания разного уровня сложности: от базового синтаксиса объявления классов до понимания порядка разрешения методов (MRO) и встроенных функций проверки типов.

Вам предстоит заполнять пропуски в коде, находить ошибки в синтаксисе наследования, собирать правильные структуры классов из фрагментов и предсказывать поведение программ. Помните, что в Python класс-наследник указывается в круглых скобках после имени класса, а все классы неявно наследуются от базового класса object.

Список тем

Создание дочернего класса

id: 40094_task1

Объявите класс ElectricCar, который наследуется от класса Vehicle. Используйте правильный синтаксис наследования в Python.

Заполните пропуски
class Vehicle:
    def move(self):
        print("Vehicle moves")

class ElectricCar input1S:
    def charge(self):
        print("Charging...")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Переопределение методов

id: 40094_task2

Проанализируйте код. Класс Cat наследуется от Animal и определяет свой метод speak. Что выведет последний print?

Выберите правильный вариант ответа
class Animal:
    def speak(self):
        return "Some sound"

class Cat(Animal):
    def speak(self):
        return "Meow"

my_pet = Cat()
print(my_pet.speak())
Сообщения
Проверить
Показать подсказку

Терминология наследования

id: 40094_task3

Распределите термины по двум группам: термины, относящиеся к классу, от которого наследуются, и термины, относящиеся к классу, который наследует.

Перетяните элементы в соответствующие блоки
От кого наследуют
Кто наследует
Родительский класс (Parent Class)
Подкласс (Subclass)
Базовый класс (Base Class)
Производный класс (Derived Class)
Суперкласс (Superclass)
Дочерний класс (Child Class)
Сообщения
Проверить
Показать подсказку

Ошибка синтаксиса наследования

id: 40094_task4

В этом коде допущена синтаксическая ошибка при попытке наследования. Найдите и исправьте строку объявления класса Smartphone.

Найдите ошибку и исправьте
class Device: 
    def turn_on(self): 
        print("On") 
 
class Smartphone extends Device: 
    def call(self): 
        print("Calling...") 
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Инициализация родителя через super()

id: 40094_task5

Заполните пропуски, чтобы корректно вызвать инициализатор родительского класса внутри __init__ дочернего класса. Это необходимо для сохранения атрибута name.

Нужно правильно расставить в пропуски предложенные варианты
class Person:
    def __init__(self, name):
        self.name = name

class Employee(Person):
    def __init__(self, name, salary):
        input1S.input2S(name)
        self.salary = salary
super()
__init__
self
Person
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Порядок определения и использования

id: 40094_task6

Восстановите правильный порядок строк кода. Сначала должен быть определен базовый класс, затем дочерний, и только потом создание экземпляра и вызов метода.

Расставьте строки в правильном порядке
dog = Dog()
class Animal:
class Dog(Animal):
    pass
    def bark(self): print("Woof")
dog.bark()
Сообщения
Проверить
Показать подсказку

Инструменты работы с классами

id: 40094_task7

Сопоставьте встроенные функции Python и концепции ООП с их описанием.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Проверяет, является ли объект экземпляром указанного класса (или его потомка)
Проверяет, наследуется ли один класс от другого
Обеспечивает доступ к методам родительского класса
Класс, от которого наследуются все классы в Python по умолчанию
isinstance()
issubclass()
super()
object
Сообщения
Проверить
Показать подсказку

Создание класса-наследника с новым методом

id: 40094_task8

Соберите код, где класс Square (Квадрат) наследуется от Shape (Фигура) и добавляет метод расчета площади. Лишняя строка содержит логическую ошибку в наследовании.

Перетяните в правильном порядке строки из одного блока в другой
class Shape:
    pass
class Square(Shape):
class Square(Object):
    def __init__(self, side):
        self.side = side
    def area(self): return self.side ** 2
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Поиск атрибутов при наследовании

id: 40094_task9

Что выведет этот код? В классе Child нет метода greet, поэтому Python будет искать его в родителях.

Выберите правильный вариант ответа
class Parent:
    def greet(self):
        print("Hello from Parent")

class Child(Parent):
    def play(self):
        print("Playing")

c = Child()
c.greet()
Сообщения
Проверить
Показать подсказку

Результат проверки issubclass

id: 40094_task10

Напишите, что выведет функция print (True или False). Класс C наследует от B, а B наследует от A. Является ли C подклассом A?

Что должно получиться?
class A: pass
class B(A): pass
class C(B): pass

print(issubclass(C, A))
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру