Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Что такое классы и зачем они нужны?

Я  использую Python для автоматизации некоторых рабочих рутинных задач. Я не программист и изучаю Python просто как хобби.
Но я все не могу понять на интуитивном уровне сути классов. Знаю, что это относится к ООП. Но в чем их суть? В чем преимущества их использования? Почему нельзя просто использовать функции? 
В каких случаях нужно использовать именно классы, а не просто функции?
ПрограммированиеPython+2
Игорь Колесников
  ·   · 14,6 K
Инженер путей сообщения – строитель  · 10 нояб 2022
Идея, стоящая за введением класса, может быть сформулирована следующим образом: в классе мы объединяем данные с методами по работе с ними в одном пространстве имён. Да, можно было бы обойтись без классов, понаделать структур (записей) и наштамповать функций, в которые явно передавать ту структуру, с которой мы хотим работать. Класс отличается только тем, что в него всегда неявно передаётся объект, стоящий в левой части оператора разыменовывания при вызове метода и внутри метода класса все члены класса доступны по своим именам. Кроме того, объектно-ориентированное программирование подразумевает три вещи:
  1. инкапсуляция (скрытие) — не все члены класса могут быть доступными, некоторые можно объявить скрытыми. Без ООП это т.н. «недокументированные функции», некоторые использовали их в своих программах, с выходом следующей версии недокументированные функции изменялись, программы прекращали работать. Когда члены класса скрыты, то программисту, использующему класс о них знать не положено, более того, вредно.
  2. наследование — класс может быть расширен, дополнен, видоизменён в классах-потомках. Это нужно для повторного использования кода, чтобы не писать новые функции под новые структуры данных. Без ООП нам бы пришлось для каждой структуры объявлять все их поля и функции для работы с ними заново.
  3. полиморфизм — изменчивость, мы имеем полное право вместо объекта одного класса передать объект производного класса и программа продолжить работать. Это позволяет работать с объектами производных классов в программах, которые могут даже не знать о существовании классов-потомков при их разработке.
Итак, с точки зрения выполнения программы классы никаких преимуществ на дают, наборот несколько замедляют, но при этом позволяют при правильной организации существенно упростить разработку, особенно больших программ. В мелких скриптах они не нужны, только мешаются и путаются.
1 эксперт согласен
Веб-разработчик, геймер, специалист по этике  · 10 нояб 2022
Вам уже дали два отличных книжных ответа, так что давайте я сосредоточусь на вот этом: > Но я все не могу понять на интуитивном уровне сути классов Давайте сразу определимся: "классы" это сокращение, на самом деле эти сущности... Читать далее
1 эксперт согласен
Спасибо большое за такой подробный и развернутый ответ. Особенно мне было полезно узнать Ваше интуитивное... Читать дальше
Openstack DevOps and IBM/Informix Certified DBA...  · 10 нояб 2022
Python — это «объектно-ориентированный язык программирования». Это означает, что почти весь код реализован с использованием специальной конструкции, называемой классами. Программисты используют классы для хранения связанных... Читать далее
1 эксперт согласен
Если не программист, то суть абстракции класса на примере ящика для деталей автомобиля. Ящик (класс) содержит в... Читать дальше