Задать вопрос
Профиль пользователя заблокирован сроком с 1 апреля 2025 г. и навсегда по причине: подозрительная активность
Ответы пользователя по тегу ООП
  • Как научиться декомпозиции в ООП?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Я когда-то так же застрял. Не понимал, как же выделять эти самые классы? И зачем?
    Долго тупил в эти «авто» и наследники «грузовик» и «легковушка», с колесиками и баками.
    Или users с managers и clients.
    Всё это было понятно, пока не пытался сам что-то осмыслить из реальной жизни.

    Мне помогли две вещи:
    1. Фраза учителя типа «класс - это заголовок таблицы; строки - экземпляры класса; имена колонок - имена атрибутов класса». Это ОЧЕНЬ ГРУБО. И многие поспорят и будут правы. И для понимания идеи учителя надо понимать базы данных или хотя бы excel и access (я как раз тогда только что это дело изучил). Но это меня сдвинуло с мертвой точки.
    2. Я долго строил всякие «парсеры» из лапши и перегруженных дурно пахнущих функций. Мне попалась на Хабре переводная статья (точнее, не официальная документация) про selenium и раскладку его в стиле ООП. Это не прям образец для подражания (там есть пара деталей, которые мне очень не понравились), но когда я свой код рефакторил в соответствии с рекомендациями этой статьи (это было долго, больно, но в итоге получилось гораздо красивее исходной чудовищной лапши), я многое понял.
    Ответ написан
    1 комментарий
  • Зачем нужны class в Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Представь, что у тебя есть проблема и по ней много разнообразных данных.
    Некоторые из этих данных однотипны, и обычно мы их как-то записываем единообразно. Например, некоторые типы удобно записать в таблицы. Сейчас мы часто записываем такие данные в таблицы типа excel.

    Так вот.
    • Таблица со своим собственным именем - это тип данных.
    • Заголовок таблицы это класс, описывающий этот тип данных.
    • Строки таблицы с данными - это экземпляры класса.
    • Колонки таблицы это атрибуты.
    • Формулы, протянутые на колонки таблицы, это методы класса.


    Это очень-очень грубо.
    Ответ написан
  • Как вытащить значение из функции в глобальную переменную?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Думаю, вам нужна не глобальная переменная, а что-то вроде redis или SQLite. С глобальными у вас всё будет плохо. Тут ежедневно по 5 страдальцев приходят с этим global…
    Не советую.

    Ну, то-есть в принципе можно навелосипедить в global свою структуру, сделать к ней класс с методами, API свой накостылить… но смысл?
    Ответ написан
  • Как создавать экземпляры класса python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В первом приближении класс пользователей - это таблица (например, в реляционной базе данных). Таким образом, создание экземпляра для каждого пользователя суть внесение записи в таблицу. Каждая запись в таблице - это экземпляр класса, соответствующий пользователю.
    Реализовывать это в виде собственно класса можно разными способами - можно вручную прописывать связь полей таблицы и атрибутов класса, можно попытаться подтянуть средствами sql alchemy orm…
    Ответ написан
    Комментировать
  • Как создать объект для класса через функцию def?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Созданный экземпляр класса надо вернуть из функции при помощи return. А результат выполнения такой функции присвоить нужной вам переменной.
    spoiler
    Есть вариант через глобальные переменные, но это вообще зашквар и лучше так никогда не делать.
    Ответ написан
  • Возможны ли классы в C?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Ответ написан
    Комментировать
  • Как правильно вызвать такой класс?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Если я правильно понимаю, vk_image основан на классе vk. Для класса vk дочерний класс vk_image никак не «подтягивается». Наоборот, когда Вы создаёте объект на основе класса vk_image, класс vk_image возьмёт за основу класс vk (вместе со всеми его конструкторами, параметрами и методами) и добавит к его методам и параметрам (или заменит в нём, в зависимости от реализации) собственные методы и параметры.
    Ответ написан
    1 комментарий
  • Почему ругается?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Ошибка значит, что константа содержит неправильную операцию. Видимо, речь о PD0. Вам точно нужна именно константа? Тогда зачем вы ей передаёте результат каких-то вычислений с параметрами? Может, она не должна быть константой?
    Ответ написан