НачатьНачать бесплатно

Полиморфные методы

Чтобы эффективно проектировать классы, важно понимать, как наследование и полиморфизм работают вместе.

В этом упражнении представлены три класса — один родительский и два дочерних, — каждый из которых имеет метод talk(). Проанализируйте следующий код:

class Parent:
    def talk(self):
        print("Parent talking!")     

class Child(Parent):
    def talk(self):
        print("Child talking!")          

class TalkativeChild(Parent):
    def talk(self):
        print("TalkativeChild talking!")
        Parent.talk(self)


p, c, tc = Parent(), Child(), TalkativeChild()

for obj in (p, c, tc):
    obj.talk()

Какой результат выведет приведённый выше код?

1. 2.

Parent talking!
Parent talking!
Parent talking!      

      

Parent talking!
Child talking!
Talkative Child talking!     
      
      
3. 4.

Parent talking!
Child talking!
Parent talking! 
Talkative Child talking!
Parent talking!      
      
      

Parent talking!
Child talking!
Talkative Child talking!
Parent talking!      

      

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

Это упражнение является частью курса

Объектно-ориентированное программирование на Python

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение