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

Долги за прошлый раз:

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

Объектное планирование и ООП

ООП:

Характеристика

Python3

Инкапсуляция (не сокрытие)

Иерархия пространств имён

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

Наследование + C3 MRO

Полиморфизм

«Из коробки», т. к. duck typing

Проксирование?

Хранить родительский объект в виде поля, а все методы нового класса делать обёрткой вокруг методов родительского объекта.

TODO пример

Простое наследование

Множественное наследование

Д/З

  1. Повторить [http://greenteapress.com/thinkpython2/html/thinkpython2016.html|15-ю]] и 16-ю главы учебника, прочитать и прощёлкать 17-ю и 18-ю главы учебника

    • Прочитать статьи про линеаризацию
      • Зачем в описании линеаризации участвует объединение линеаризаций родительских классов и самих классов (в лекциях я это опустил)?

      • Иными словами, чему служит выделенная часть:
        • L[C(B1 ... BN)] = C + merge(L[B1] ... L[BN], B1 ... BN)

      • Много ли мы теряем от того, что C3, в отличие от обхода дерева, может завершиться неудачей?
  2. EJudge: DivStr 'Деление строки'

    Написать класс DivStr, унаследованный от str, который поддерживал бы операцию деления «//» и остатка от деления «%». Деление на N должно возвращать список из N подстрок одинаковой наибольшей длины, на которые можно разделить исходную строку, а остаток — оставшуюся концевую подстроку меньшей длины (возможно, пустую)

    Input:

       1 a = DivStr("XcDfQWEasdERTdfgRTY")
       2 print(*a//4)
       3 print(a%4)
    
    Output:

    XcDf QWEa sdER Tdfg
    RTY
  3. TODO