Тоже вариант. Вы всегда исходите с текущих нужд. У разработчика часто торговля с самим собой.
Если save() - это разные провайдеры типа FileHandler(), DBHandler(), CloudHandler(), то это почти весь SOLID: - одна ответсвенность у каждой сущности - save() - открыт для расширения, закрыт для изменений - сегрегация интерфейсов (в питоне абстрактный класс) - инверсия зависимостей — модули высокого уровня не зависят от модулей пониже
Пока не парься. Это я к тому, что не нужно бояться ООП, если все на своих местах. Как человек из рынка, понимаю, что целесообразность менятся от места к месту, от времени к времени. Немало кто пишет без ООП и ничего.
в случае с duck-typing ом все эти абстракты могут быть не особо нужны. По крайней мере на начальном этапе. Абстракты можно сделать потом, когда уже будет более-менее ясная картина
Я думаю добавить какого-то бота который может компилить питон или может викторину по языку или типа решить литкод задачу на скорость. Добавить интерактива в группу)