Сначало я думал, что классы необходимы для создания своего пространство имён (что-то между функцией и модулём, так сказать микропрограмма), потом я думал, что классы используется в основном лишь только в играх и в создании языков, так как всё остальное можно реализовать с помощью функций, после я думал, что они нужны для создания собственных типов данных (не знаю даже как это объяснить).А зачем тебе что-то объяснять? Ты и сам обо всём догадался. Реальные программы оперируют сущностями реального мира, которые ограничены рамками предметной области. Очевидно то что-бы ими оперировать нужен тип данных который эти сущности описывает. Этим типом данных и является класс, а экземпляр класса это сами данные. С технической точки зрения объект это пространство имён (т.е. словарь) в котором содержаться свойства (т.е. информация об объекте) и методы (т.е. функции при помощи которых можно с этим объектом взаимодействовать). Ну вот собственно в этом основная идея ООП и заключается.
P.S. Кроме ООП существуют другие методологии описания предметной области (например Алгебраические Тип Данных), но это уже не про Python.