LINUX.ORG.RU
ФорумTalks

ненависть: Python, где же ООП, ау?

 , , , ,


1

5

в прошлый раз когда я тут поразбирал тесты курильщика python мне тут несколько адептов хором рассказывали про ООП.

Практически дословная цитата:

Ты, идиот! ООП не знаешь!

Ок, ООП.

Смотрим популярный фреймворк, например flask.

Вот пример кода из его документации:

from flask import request
@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None
    if request.method == 'POST':
        if valid_login(request.form['username'],
                       request.form['password']):
            return log_the_user_in(request.form['username'])
        else:
            error = 'Invalid username/password'
    # the code below is executed if the request method
    # was GET or the credentials were invalid
    return render_template('login.html', error=error)

В каком еще другом языке есть веб-фреймворк с подобным надругательством над ООП?

★★

Последнее исправление: leave (всего исправлений: 1)

Тема сообщения и само сообщение говорят о разном. Тема - о языке, сообщение - о фреймворке. Ну как же так.

AlexKiriukha ★★★★
()
Ответ на: комментарий от AlexKiriukha

дык популярный фреймворк - и такие косяки с ООП.

очевидно проблема базируется именно в языке, раз никому даже в глаза не бросился этот кошмар

rsync ★★
() автор топика
Ответ на: комментарий от AlexKiriukha

Вот так многолетнее введение Perl внутрь мозга влияет на мышление.

Deleted
()

Пример неудачный. Причём, даже для самого фласка. Так можно делать, но так не делают. Плюс Ооп и разбор http... Это обычно прячут в объекты auth, session и всё такое, и уже потом занимаются ООП.

Shadow ★★★★★
()
Ответ на: комментарий от rsync

Этот кошмар всё равно выглядит лучше, чем PHP и обычно скрыт в паре файлов инициализации приложения.

Shadow ★★★★★
()
Ответ на: комментарий от rsync

Метод http get с парсингом вручную. Остальное - через json запросы с маппингом на модели, всё объектненько.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

у PHP вебфреймворк на борту. вернее даже так: PHP - это по сути и есть вебфреймворк.

поэтому PHP подобное поведение можно простить.

но мы говорили об ООП, вернее о надругательстве над ним

rsync ★★
() автор топика
Ответ на: комментарий от rsync

Возможно, я глянул и увидел лютую процедурщину.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

я говорю не о http get и не о парсинге вручную.

я говорю о надругательстве над ООП.

ГЫ! питонщики даже не видят проблемы!

rsync ★★
() автор топика
Ответ на: комментарий от rsync

Как здесь может быть надругательство над ООП, если здесь процедура с обращением к каким-то свойствам каких-то объектов? Т.е. тут нет Ооп.

Shadow ★★★★★
()

В прошлый раз мне указали на то, как правильно пользоваться pytest. Сегодня я заглянул в документацию flask — а там все по другому!

Ясно, понятно.

gistart
()
Ответ на: комментарий от gistart

про надругательство над ООП комментировать не будем?

ну конечно, что тут комментировать. Вы ж нормального ООП не встречали.

Python ГМ

rsync ★★
() автор топика

В Python ООП достаточно кривенький и убогенький, это знают абсолютно все. В чём суть треда? Ещё раз напомнить об этом?

EXL ★★★★★
()
Ответ на: комментарий от rsync

про надругательство над ООП комментировать не будем?

Будем конечно, пиши петицию автору flask'а или сразу в спортлото. В мире очень много людей, которым важное твое мнение об их работе — не держи его в себе!

gistart
()
Ответ на: комментарий от rsync

Согласен что это какой-то треш, но питон тут не причем. Просто фласк какой-то треш походу. Никогда его не использовать tbh и вообще не знаю зачем он нужен.

pawnhearts ★★★★★
()
Ответ на: комментарий от EXL

когда я в прошлый раз обратил внимание что питонячьи разрабы сунули ООП туда куда совать его не следовало бы - мне сказали «ты идиот, ООП не знаешь!»

а теперь я им пример того как над ООП грязно надругались, а они мне про какое-то функциональное программирование (даже термин не понимают WTF, но применяют!)

ППЦ

rsync ★★
() автор топика
Ответ на: комментарий от pawnhearts

можете сформулировать в чем Вы видите треш в данном примере?

один уже промахнулся, может Вы попадёте?

rsync ★★
() автор топика
Ответ на: комментарий от Jopich1

в маленьких и аккуратных REST можно было не ломать же ООП, правда, правда?

rsync ★★
() автор топика
Ответ на: комментарий от rsync

очевидно, request должен быть агрументом функции login.

pawnhearts ★★★★★
()
Ответ на: комментарий от slaykovsky

В пистоне какаха а не ООП. ООП в смоллтолке.

В питоне ООП со __встроенными__ шаблонами проектирования

sniper21 ★★★★★
()
Ответ на: комментарий от sniper21

А теперь смотри:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Explicit is better than implicit.

Oops

slaykovsky ★★★
()
Ответ на: комментарий от rsync

можете сформулировать в чем Вы видите треш в данном примере?

Ни в чём, претензии к оопности тут не к месту, ооп в данном примере мало используется. То что питоновские модули и синтаксис обращения к ним сделали таким же, как у объектов, это просто удобство языка, ибо не стали городить лишних синтаксических сущностей. Но если ты используешь что-то типа module.shmodule.method() не значит что у тебя уже объектноориентированное программирование в коде. Претензии высосаны из пальца.

Deleted
()
Ответ на: комментарий от rsync

Го компилируется за секунды. Rust компилируется чуть дольше, но это не важно.

А вообще причём тут это?

slaykovsky ★★★
()
Ответ на: комментарий от rsync

Ну ты взял другой ЯП и даже с учетом этого ты не сделал того, что было в примере на питоне, так что это вообще нещитово.

micronekodesu ★★★
()
Ответ на: комментарий от rsync

ок, первую строку кода можете прокоментировать?

Там из модуля flask импортируется подмодуль request. Можно было бы подключить flask целиком, тогда бы в коде пришлось везде писать flask.request. вместо просто request.

Deleted
()
Ответ на: комментарий от micronekodesu

то что делает код в примере несущественно.

существенно КАК он это делает

еще раз: первую строку примера flask можете прокоментировать?

rsync ★★
() автор топика
Ответ на: комментарий от rsync

Если я правильно тебя понимаю, то что ты показал там делается так: from flask import *

И, кстати говоря, этот синтаксис красивее и понятнее, например незнакомому с языком. Сразу очевидно что происходит.

Deleted
()
Ответ на: комментарий от Deleted

Вернемся к flask.request

  • что означает в данном коде идентификатор flask
  • и что означает в данном коде идентификатор request?
rsync ★★
() автор топика
Последнее исправление: rsync (всего исправлений: 1)
Ответ на: комментарий от rsync

ну, а дальше?

Дальше там декоратор. Не люблю эту питоновскую фишку, а роутинг больше нравится джанговский.

Deleted
()
Ответ на: комментарий от rsync

Flask это модуль. Request его вложенный модуль, видимо. Надо внутрености смотреть что там. Физически flask это может быть просто каталог с пустым файлом __init__.py, a request может быть файлом request.py внутри него. Надо внутренности смотреть, так хз.

Deleted
()
Ответ на: комментарий от rsync

Больше представляет интерес, что конкретно ты понимаешь под баззвордом «ООП».

Octagon
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.