Комментарии 14
user1 = ['Вася', 23, 'Чебоксары'];
Вот это прям печаль, новички же часто усваивают вот такими примерами из обучения.
Писать в переменную суперкласса — дурной тон.
А почему? Использование переменных на уровне класса это иногда вполне нормальный способ дать понять, что это это глобальная переменная/константа как то связанная (по задумке программиста) с этим классом. Всяко лучше чем просто глобальная переменная.
И иногда удобней чем Singleton класс и прочие способы (которых много в C++, например).
Хотя python… ни области видимости, ни… (классы убогие).
python явно не лучший пример для демонстрации OOП.
Или имеется в виду засада с "User.user_count -= 1" в многопоточном приложении?
что так писать — это делать закладку на "она себя странно ведет" при переходе на multithread модель программы?
Хотя я согласен. общий уровень статьи "Сравнение: классы против функций" ужасен.
Константа да, но в каких случаях нужна переменная в классе
Вам действительно не приходилось пользоваться глобальными переменными?
Вообще и никогда?
Переменная в классе python, это некий аналог static member в C++, Java.
Если учесть отсутствие нормальной инкапсуляции (по доступу) в python, то это фактически "подсказка разработчику того, что эта глобальная переменная по задумке связана с этим классом"
(И да. Не надо мне рассказывать про "инкапсуляцию" в python путем добавления "_" "__" к имени переменной. Это типичная "заплата" по принципу "на и отвяжись".)
особенно тем, что только начал программировать?
Как работают "потроха" — это, на мой взгляд, основа с чего нужно начинать.
Иначе программирование превращается в "магию" и набор шаманских рецептов.
Существование глобальных переменных (и переменных класса), в частности, к этим базовым знаниям и относится.
Впрочем увы. Я все больше и больше вижу:
- Магия "Spring Boot" и прочая магия.
- Зачастую, ужасно корявые рецепты с stackoverflow, копируемые как есть.
- Дурацкий споры насчет императивного и декларативного программирования. Как будто базовые принципы с 70-х годов поменялись и компьютеры стали императивными на уровне железа (как аналоговые компьютеры).
- И т.п. и т.д.
Стоп. меня понесло…
Как работают «потроха» — это, на мой взгляд, основа с чего нужно начинать.
Иначе программирование превращается в «магию» и набор шаманских рецептов.
Не соглашусь. Если начать обучение с потрохов,
то новичок с очень высокой вероятностью ничего не поймет,
посчитает что это очень сложно и забьет на программирование.
Изучение потрохов станет интересно после получения хотя бы минимального опыта
Следовало бы сказать, что в ООП получается больше кода, но подход более абстрактный и используется в сложных системах.
Ну оочень спорное и без апелляционное заявление. По разному бывает. От конкретного разработчик азависит.
Я — тот самый автор статьи из Кода. Спасибо за подробный разбор и за полезную критику. Мы удалили ту статью и объяснили, почему мы это сделали: thecode.media/oop_battle
Сейчас мы работаем над новой версией этой статьи, и, если вы не против, возьмём часть примеров из вашего разбора. Как только появится новый материал — сразу скину ссылку на него в комментариях.
Из моего опыта. Если человек новичок то однозначно классы. Если опытный, то эмоционально придет к программированию функциями.
К сожалению, большинство "групп для программистов" не ставят целью научить программировать грамотно и красиво, а делают упор на привлечение внимания. А причина, думаю, и так понятна
Разбор статьи из журнала «Код» (Яндекс Практикум)