Найти - Пользователи
Полная версия: Классы Паттерны и ООП в пайтон
Начало » Python для новичков » Классы Паттерны и ООП в пайтон
1 2 3 4
texsce
добрый вечер.
Пытаюсь разобраться в языке, появились следующие вопросы:
как в пайтоне реализована абстракция, как принцип ООП?
В каких случая следует использовать ООП? заметил, что многие модули не используют классы
Следует-ли в пайтоне применять типизацию?
Правильно-ли я понимаю, что из-за модульной структуры порождающие паттерны в целом не нужны?
И еще посоветуйте пожалуйста литературу по практике написания кода, желательно с упором в веб или хайчлоад
xam1816
texsce
И еще посоветуйте пожалуйста литературу по практике написания кода, желательно с упором в веб или хайчлоад
Чтобы с вебом работать, нужно веб отдельно изучать.Т.е хорошо понимать как работает вся эта магия с html, css, javascript(хотябы примерно),запросы ,ответы, url и тд. Без этих знаний python будет бесполезен.

Если есть опыт с другими языками, так пройдитесь по азам сначала. Переменные, if, while, списки, функции. На начальном этапе важно поошибаться, чтобы понимать, на что ругается интерпретатор, т.е. распространенные ошибки.
Просто бывает выглядит глупо, когда человек рассуждает про классы как взрослый, а на форуме потом задает вопросы про детские ошибки.
texsce
В каких случая следует использовать ООП
Это философия связана с организацией в пространстве. В жизни - это когда много вещей, и их организуешь по полкам, ящикам, комнатам, размещаешь в с соответствии с функциональностью или свойствам и тд.


В программировании вместо вещей - алгоритмы. Вот пишешь код, и понимаешь что какие-то строки у тебя повторяются, так ты их выносишь в отдельную функцию - это и есть отдельное пространство для алгоритма.

Потом понимаешь что много функций одного и того же направления.Их собираешь в отдельный модуль - пространство побольше. Тоже самое и с классами - организация алгоритма.

Когда использовать организацию - тогда, когда алгоритмов становиться больше их нужно распределить, чтобы ими было удобнее управлять, потому что человеческие ресурсы, как и физические ограничены.

Главное вовремя понять что твой код растет, и если его плохо организовать, будет много ошибок. Также как и если вещей много на складе, если их разложить неправильно, да еще и коробка в коробке, то чем их больше, тем хуже искать, доставать, и тд.
py.user.next
texsce
заметил, что многие модули не используют классы
Они просто без классов писать умеют, а ты не умеешь. Обычно кто без классов писать не умеет, тот и с классами писать не умеет.

texsce
В каких случая следует использовать ООП?
Когда ты дорос до ООП. А для этого надо уметь писать без ООП.

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

texsce
Правильно-ли я понимаю, что из-за модульной структуры порождающие паттерны в целом не нужны?
Я думаю, ты просто изучение программирования не с того начал. Если на строительство перевести, например, то получится, что ты собрался изучить строительство домов и спрашиваешь сейчас вопросы про крышу в стиле “а что, правда вот шершавая крыша не нужна, чтобы первый этаж строить?”. Да, чтобы строить первый этаж, там нужно подвал сначала построить, а под него фундамент заложить, чтобы дом под землю не ушёл, когда очень тяжёлым станет. Причём тут крыша какая-то там? И ты такой “а ф-фун-фень… фундамент - это чо такое?”. Так надо же сначала изучать вот это, а не вот то. Тогда и знать будешь.

Так что займись основами и пиши без ООП хоть что-нибудь работающее. Даже какая-нибудь работающая мелочь гораздо лучше, чем какие-то твои познания, которые ты хочешь кому-то там демонстрировать. Если ты ничего не можешь сделать сам, то ты зависим от других, потому что берёшь всё у них. А когда ты зависим от других, с тебя тянут. А с мелочей, которые ты производишь сам, ты можешь вырасти дальше и делать уже что-то покрупнее. Так со временем ты уже всех обгонишь и у тебя бесплатно будет такой инструментарий, который они и купить себе не смогут даже.

Я вот себе скрипт написал, который ходит по аптекам города и ищет лекарства с самым оптимальным производителем и самой низкой ценой. Там где-то сорок аптек, в каждую надо зайти и руками там навыставлять значений, понабирать в поиске, определить, где какие скидки есть и где каких скидок нет и так далее. Если руками это делать, то это сделать теоретически реально, но часов десять это надо делать, набирая каждое лекарство в каждой аптеке, на которую ещё надо перед этим переключиться. Никто не будет это руками делать. Так вот, когда тебе врач выписывает лекарства, то их, как правило, не одно наименование, не одна коробка и так далее, выходит тысяч на пять это всё в среднем. И ты не можешь половину из них повыкидывать нафиг из списка, потому что тогда ты вообще не выздоровеешь и деньги только зря потратишь и время на дополнительные походы по врачам. Вот я написал себе этот скрипт и спокойно сокращаю стоимость лекарств процентов на тридцать от всего этого набора, посоветованного врачом. Причём вся программная инфраструктура этих аптек, а у них есть и сайт, и приложение для смартфона, и улыбчивые и советующие лучшие лекарства провизоры, вся эта инфраструктура не позволяет найти ничего подешевле, потому что все эти программные и человеческие средства принадлежат самой этой аптечной сети, которая не заинтересована, чтобы ты брал у них самое дешёвое и по всем пунктам. То есть программы есть, но они не помогают нифига, они в сторону аптеки действуют. Так что люди, которые пользуются их программами, даже в лучшем случае не смогут сократить стоимость набора лекарств, которые им выписал врач, процентов на десять даже, максимум пять процентов. Так вот, благодаря своей программе, которую я ни у кого не брал и никто мне её не давал и не дал бы никогда, я покупаю не за пять тысяч набор, а за три триста. Люди идут и покупают за пять или максимум за четыре семьсот пятьдесят. И они ничего сделать не могут, у них моей программки нету.

Так что программирование - это не типа с умным видом что-то вещать, а это вот такие программы делать. И когда ты фирме сможешь освободить вот такие миллионы, тогда тебя возьмут на работу за сто тысяч, потому что ты будешь рентабельным как рабочая единица. Ты им приносишь миллионы, а они тебе платят десятки тысяч. Всех всё устраивает.
texsce
ох…. да ребята, а я думал в php снобы, ну давайте разберемся с вашими ответами

xam1816
Чтобы с вебом работать, нужно веб отдельно изучать.Т.е хорошо понимать как работает вся эта магия с html, css, javascript(хотябы примерно),запросы ,ответы, url и тд. Без этих знаний python будет бесполезен.

что бы работать с бекендом не обязательно знать html, css, javascript пример - фронтенд работает через апи бекенда, запросы ,ответы, url - да желательно

xam1816
Если есть опыт с другими языками, так пройдитесь по азам сначала. Переменные, if, while, списки, функции. На начальном этапе важно поошибаться, чтобы понимать, на что ругается интерпретатор, т.е. распространенные ошибки.
по азам-то я прошелся, а вот на классах у меня ступняк, потому что на фреймворках в новой команде все пишут в императивном стиле и я не могу понять зачем.

xam1816
В программировании вместо вещей - алгоритмы. Вот пишешь код, и понимаешь что какие-то строки у тебя повторяются, так ты их выносишь в отдельную функцию - это и есть отдельное пространство для алгоритма.
т.е. вы хотите сказать, что модульная организация пайтона, по сути дела предполагает под собой пространство имен. И для большинства решаемых задач такая организация кода позволяет обходится без классов -как способа организации архитектуры?

py.user.next
Она и без тебя применяется. Когда ты пишешь на питоне, в нём типизация сама работает, хочешь ты этого или нет. Попробуй сложить строку с целым числом и получить в результате то, что тебе хочется.

вообще вопрос был в сторону анотации типов, видимо не точно объяснил - понимаете за счет указания типов архитектура становится более грамотная…. ладно я понял, что она то же особо не нужна

py.user.next
Так вот, благодаря своей программе, которую я ни у кого не брал и никто мне её не давал и не дал бы никогда
к чему все это? ну … молодец?

то что вы пишите простенькие программы решающие бытовые задачи это хорошо, но есть такие запросы в том числе от компаний как поддерживаемость программного решения и расширяемость, и вот здесь на первое место выходит подходы к реализация архитектуры. Если вы напишите лапшу из кода и уйдете следующий пришедший программист скажет - код не читаем, это все нужно менять и делать по новой, так обычно и было до появления методологий разработки-принципов которых придерживается команда для обеспечения “преемственности” кода


попробуем еще раз

как в пайтоне реализована абстракция- базовый принцип ООП?
Правильно-ли я понимаю, что из-за модульной структуры и как следствие пространство имен, порождающие паттерны в целом не нужны?
И еще посоветуйте пожалуйста литературу по практике написания кода, желательно с упором в веб или хайчлоад





m1r42
texsce
как в пайтоне реализована абстракция- базовый принцип ООП?
В моем понимании абстракция:
 class MyClass():
    arg1 = 0
    arg2 = 5
    def __init__(self):
        self.arg0 = 3
    def info(self):
        print(self.arg3)
class MySubClass(MyClass):
    arg3 = 1
MySubClass().info() # используем метод info() класса MyClass и пофиг чего там еще в нем есть
texsce
m1r42
это наследование

может литературу подскажете?

ZerG
Марк Лутц - Изучаем Питон
py.user.next
texsce
что бы работать с бекендом не обязательно знать html, css, javascript пример - фронтенд работает через апи бекенда
Ты ещё скажи, что чтобы разрабатывать под веб, можно и вообще не знать программирования, так как можно просто позвонить программисту, а он уже в свою очередь всё напишет тебе.

Ты не знаешь, да, что и HTML-код, и CSS-код, и JavaScript-код можно генерировать динамически? Он генерируется и передаётся браузеру, а тот уже соединяет эти куски в единое целое. Так получается как бы целая страница с живыми и красивыми элементами. Но вот стырить и перекинуть на свой сайт, а потом выдавать за свою разработку, ты её не сможешь, потому что она может быть сильно видоизменена в результате каких-то тёмных преобразований внутри чёрной коробки.

Да и кому нужен такой бэкендер, который ничего не понимает в том, что делает? Как он будет понимать, что от него хотят и для чего, какие элементы он должен сделать?

texsce
вообще вопрос был в сторону анотации типов, видимо не точно объяснил - понимаете за счет указания типов архитектура становится более грамотная
А ты не можешь объяснить, зачем она тебе нужна вдруг стала? Это чтобы чисто ребята ламером не обозвали?
Аннотация нужна для линтеров.
Так-то она только переполняет код лишними буквами. Если же код неясен и смутнопонятен без аннотаций, то это просто код такой низкого качества. В команду, конечно, одних гениев набрать сложно. В основном это будут вот такие подростки, которые слышали звон, но не знают где он. И вот для таких команд, в которых мало настоящих профессионалов, и нужны подобные вещи, чтобы просто не запутатся в гениальностях друг друга.

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

texsce
но есть такие запросы в том числе от компаний как поддерживаемость программного решения и расширяемость
Так расширяй, что ты к уже написанному коду пристал? Видимо, код такого качества, что в него надо лезть уже после того, как его написал очередной гений-летун-птушник.

texsce
Если вы напишите лапшу из кода и уйдете следующий пришедший программист скажет - код не читаем, это все нужно менять и делать по новой
А зачем он вообще лезет в этот код? Там есть интерфейс - пользуйся. Всё спрятано за интерфейсом. Очень интересная стратегия у компании: по сто раз переписывать один и тот же фрагмент системы с целью расширения, нанимая и выпинывая программистов периодически.

texsce
как в пайтоне реализована абстракция- базовый принцип ООП?
Ну, если бы ты мог понять этот принцип, ты бы вопроса этого не задавал бы? По ним-то ты и палишься. Это вопрос в стиле “я вот знаю, что в доме где-то есть плита для готовки еды, подскажите мне точные координаты крыши дома, по которым я эту плиту смогу там найти сразу, а то долго искать не хочется”. Вопрос сразу возникает: а ты точно понимаешь то, про что так умно типа спрашиваешь?

texsce
а я думал в php снобы
Ну, после PHP ты хотя бы процедурную парадигму должен знать-то? И почему ты её императивной называешь? По принципу императивная - значит, императорская типа, типа главная и поэтому основная? Это прикол, конечно, но а вдруг?
m1r42
texsce
это наследование
ок, но суть та же
 from abc import ABC, abstractmethod
class MyAbsClass(ABC):
    @abstractmethod
    def info(self):
        print("инфа")
class MyClass(MyAbsClass):
    def info(self):
        super().info()
obj = MyClass()
obj.info()
texsce
ZerG
Марк Лутц - Изучаем Питон
спасибо уже читаю)


о … накал страстей

py.user.next
Ты ещё скажи, что чтобы разрабатывать под веб, можно и вообще не знать программирования, так как можно просто позвонить программисту, а он уже в свою очередь всё напишет тебе.
и такое бывает, когда на работу знакомых устраиваешь
py.user.next
Ты не знаешь, да, что и HTML-код, и CSS-код, и JavaScript-код можно генерировать динамически?
знаю
py.user.next
и так то же бывает, а бывает, что работа делится на бекенд и фронтенд и с бекенда нужно лишь апи, а на фронтенде происходит получение данных и сборка итоговой страницы из шаблонов, не слышал о таком?

py.user.next
Да и кому нужен такой бэкендер, который ничего не понимает в том, что делает? Как он будет понимать, что от него хотят и для чего, какие элементы он должен сделать?
бекендер должен работать по тз, тз-то хоть знаешь что такое?


py.user.next
А ты не можешь объяснить, зачем она тебе нужна вдруг стала? Это чтобы чисто ребята ламером не обозвали?
Аннотация нужна для линтеров.
Так-то она только переполняет код лишними буквами. Если же код неясен и смутнопонятен без аннотаций, то это просто код такой низкого качества.

типизация и аннотация типов для чего нужна? как давно вы работает профессионально с языком? Есть командный опыт разработки? Попробую объяснить, в большинстве языков нет модульной структуры как в пайтоне, но есть пространство имен область видимости и классы эти сущности используются при проектировании архитектуры, а еще архитектура очень часто опирается на паттерны проектирования. Дак вот методы классов зачастую имеют указание типов аргументов и исходящих данных, т.к. это способствует да удобочитаемости кода но и предотвращению ошибок при использовании классов и как следствие целых библиотек. Другими словами указание типа является не просто инструментом для валидации или для анотации, оно как бы призвано работать для системы конкретный ключ к конкретному замку, что упрощает и облегчает работу.

py.user.next
К тому, что ты с классами не напишешь даже это, а без классов - тем более. Просто, чтобы оно работало, надо уметь составлять алгоритмы, а ты их не умеешь составлять, потому что решил пропустить этот шаг и начать с самого современного, что ты там откопал в пространстве этой области, - с шаблонов ООП.
Можешь сколько угодно ходить вокруг компьютера и рассказывать ему, как ты ООП знаешь и используешь со всеми модностями, только вот программа от этого не напишется и тем более фурычить не будет сама по себе.

а ты знаешь мой уровень в разработке? да и потом в той простыне самоублажения что ты накатал кроме пафоса по делу ничего, написал парсер с сравнением цен и рассказывает на каждом шагу что он выдающийся программист, да это обычная задача, помимо прочего уже реализованная можно было просто погуглить. В следующий раз не сломай руку пока будешь убложать себя.

py.user.next
А зачем он вообще лезет в этот код? Там есть интерфейс - пользуйся. Всё спрятано за интерфейсом.
да что ты, а ты спросил он там есть?

py.user.next
Ну, если бы ты мог понять этот принцип, ты бы вопроса этого не задавал бы? По ним-то ты и палишься. Это вопрос в стиле

а ты слышал про абстрактные классы и интерфейсы?

py.user.next
Ну, после PHP ты хотя бы процедурную парадигму должен знать-то? И почему ты её императивной называешь?

потому что это Методология императивного программирования

https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F

py.user.next
короче больше на мои вопросы ответы не пиши, надоело твои истерики разбирать, время лишь в пустую теряю, мало того что ты ВООБЩЕ не понимаешь, о чем тебя спрашивают, хуже того ты не разбираешься том о чем говоришь






This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB