Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 28, 2026 09:59:39

Savely
Зарегистрирован: 2026-04-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Поясните про OOP

У меня проблемы с пониманием OOP.
Вот, например, Blueprint. Что это значит?
Можно с примерами, пожалуйста?
Спасибо

Офлайн

#2 Апрель 28, 2026 22:23:32

Alex.Pro.
От: Марик
Зарегистрирован: 2024-11-13
Сообщения: 99
Репутация: +  2  -
Профиль   Отправить e-mail  

Поясните про OOP

Savely
Вот, например, Blueprint. Что это значит?
The Blueprint - независимый сайт о моде, красоте…
Модный интернет-журнал The Blueprint — независимое издание о моде, красоте и современной культуре.
Пониманию ООП сайт о моде не поможет.

Офлайн

#3 Апрель 29, 2026 17:32:37

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Поясните про OOP

> Вот, например, Blueprint. Что это значит?

Скорее всего ты имеешь в виду шнягу из Flask-а. Её можно представить как способ инкапсуляции уровня модуля, но к ООП это никакого отношения не имеет.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Апрель 30, 2026 05:34:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Поясните про OOP

Savely
У меня проблемы с пониманием OOP.
Вот, например, Blueprint. Что это значит?
Blueprint - это не ООП. Это абстракция, которая в разных областях называется одинаково, но при этом обозначает разные вещи. Это типа шаблона что-то, который можно заполнять какой-то конкретикой. Шаблон или схема, что-то вроде этого. В питоне во Flask есть они, там это что-то вроде контейнера, который нужен для организации модульности сайта или веб-приложения. Ну ты кусок веб-приложения засовываешь в блюпринт, в котором всё своё, поэтому там можно использовать свои маршруты, свои части всякие, свои шаблоны страниц и так далее, и всё это автоматически будет становиться инкапсулированным внутри этого блюпринта и действовать под его именем. И всё веб-приложение становится набором блюпринтов, в которых шаблоны имеют одинаковое всё, но это не перемешивается между собой, потому что блюпринты хорошо разделены и отделены друг от друга, как отдельные коробочки. Поэтому можно взять целый блюпринт, вытащить его из веб-приложения и заменить на другой или закинуть его в другое веб-приложение. Это всё модульность и её свойства. Также если в сайте или веб-приложении есть похожие между собой части, то тоже можно брать этот блюпринт один и размножать его, заполняя эти экземпляры немножко разными детальками. Получается общая конструкция, которая повторяется, но при этом каждая копия работает немножко по-своему. Чтобы не писать это всё каждый раз, есть вот эта заготовка, которую можно просто скопировать. Это в общих чертах, потому что везде оно означает разные вещи.

А что касается ООП, оно везде одинаковое и одно и то же. Разные языки программирования реализуют ООП до какой-то степени. Ну, например, в ООП есть множественное наследование, оно есть в ООП всегда, а в языке Java нет множественного наследования, только одиночное наследование там есть, хоть Java и считается чуть ли не самым ООПшным языком. А куда-то множественное наследование делось из-за этого? Нет, конечно, оно там так и продолжает оставаться в ООП, как и было всегда. Просто Java не реализует ООП полностью. А в питоне, например, есть множественное наследование, но нет интерфейсов, а в ООП интерфейсы есть. То есть у каждого языка свои заморочки. Но ООП от этого не меняется. Кто-то придумал блюпринты в каком-то языке или в программе, ООП от этого изменилось? Нет, не изменилось, всё осталось тем же самым.



Офлайн

#5 Май 7, 2026 21:44:41

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

Поясните про OOP

Savely
У меня проблемы с пониманием OOP.
Представь, что ты пишешь программу для офиса, где стоит несколько принтеров. Тебе нужно помнить про каждый: включён он или выключен, сколько в нём бумаги, печатает он сейчас или простаивает.

Как это выглядело бы без ООП

Ты бы заводил отдельные переменные под каждое свойство каждого принтера:


принтер1_включен = True
принтер1_бумага = 50
принтер1_печатает = False

принтер2_включен = False
принтер2_бумага = 10
принтер2_печатает = False
Чем больше принтеров и чем больше у них свойств — тем страшнее. Переменные разбросаны по коду, их легко перепутать, сложно передавать в функции и не забыть, что к чему относится.

Что предлагает ООП

ООП говорит: «Давай сделаем единый шаблон — класс Принтер, в котором будет прописано, какие у принтера бывают свойства и что он умеет делать».

Класс — это как шаблон или чертёж, по которому создаются конкретные принтеры. А каждый созданный по этому шаблону принтер — это объект (или экземпляр класса).

У каждого объекта внутри, как в собственной коробочке, хранятся его личные данные:

состояние: включён / выключен / печатает / ждёт бумагу

количество листов в лотке

модель, имя — что угодно

И он же сам умеет с этими данными работать — у него есть методы (это просто функции внутри объекта):

метод печатать() уменьшает количество бумаги

метод сообщить_о_себе() рассказывает, что с ним сейчас происходит

Как это выглядит в коде (очень упрощённо)


принтер1 = Принтер(бумага=50)
принтер2 = Принтер(бумага=10)

принтер1.печатать() # бумага внутри принтер1 уменьшилась, принтер2 — не тронут
принтер2.сообщить_о_себе() # расскажет только про себя
Каждый объект живёт своей жизнью и ничего не знает про остальных. Ты просто говоришь: «Принтер номер 1, печатай!» — и не думаешь, где там лежат переменные и как их не перепутать.
Главная мысль

Вместо кучи разрозненных переменных ты создаёшь удобные «коробочки»-объекты, в каждой из которых всё своё лежит организованно и никуда не теряется. Это одна из ключевых идей ООП — держать связанные данные и поведение вместе.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version