abc — модуль, который помогает проектировать абстрактные сущности.



Абстрактные классы широко фигурируют в ООП и часто всплывают в шаблонах проектирования. Они говорят, что общий интерфейс уже обозначен, но этот класс еще не предназначен для использования, кроме как для наследования от него конкретных потомков.



Формально говоря, абстрактные классы не являются чем-то необходимым в силу динамичности языка. Если мы выкинем все упоминания абстрактности классов и методов из рабочего кода, он продолжит работать как и ранее.



На примере выше видно, как с помощью под-модуля мы создаём класс Hero, а затем и класс Archer где прописываем то, что нам нужно. Стоит отметить, что без последней строки код работать не будет, ведь мы его не вызываем.



Абстрактные классы нужны на этапе проектирования или расширения кода, чтобы обеспечивать «правильные» взаимодействия новых классов, защищая от создания экземпляров абстрактных классов.



Ставить ничего не нужно, ведь это встроенный модуль :3

Документация и примеры кода здесь.