Урок 79. Summary session 20

📁 Блок: OOP ⏱️ Время изучения: ~60 мин 🎯 Сложность: Повторение
#from #import #class #abstractmethod #help #raise #def #super #total_ordering #in #len #bool #if #str #print #repr #pass #abc #title #return #try #except #as #is #isinstance #not #for #lower #strip #items #join #sorted #setdefault #append #get #datetime #del

⚡ Кратко: суть темы

Summary session 20 — урок повторения трёх тем: абстрактные классы, пользовательские исключения и магические методы.

  • Абстрактные классы из abc.ABC с @abstractmethod задают «контракт» для наследников и не позволяют создать незавершённый объект.
  • Докстринги классов делают код понятнее; доступны через ClassName.__doc__ и help().
  • Пользовательские исключения наследуются от Exception (или его подклассов); могут хранить дополнительные поля для контекста.
  • Магические методы управляют сравнением, индексацией, арифметикой, логическим значением и вызываемостью объектов.

Что запомнить: магические методы — это не магия, а соглашения Python: реализуйте нужный dunder, и объект начнёт работать с встроенными операторами и функциями.

Частая ошибка: забывать вызывать super().__init__(...) в пользовательском исключении или возвращать NotImplemented в методах сравнения/арифметики при неподдерживаемом типе.

📖 О чём этот урок

Summary session 20 объединяет материал уроков 76–78: абстрактные классы, документирование классов, пользовательские исключения и магические методы. Цель — систематизировать знания и подготовиться к работе с базами данных.

Что повторим

  • Создание абстрактных классов через ABC и @abstractmethod.
  • Написание и назначение docstrings для классов.
  • Создание пользовательских исключений с дополнительными полями.
  • Методы сравнения: __eq__, __lt__ и декоратор @total_ordering.
  • Методы контейнеров: __getitem__, __setitem__, __contains__, __len__.
  • Арифметические дандеры и инкрементные методы.
  • Методы __bool__ и __call__.

📚 Что повторить перед изучением

🎯 Что изучать дальше