Змея / Говнокод #26823 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
def __init__(self, text: str, description: str, category_id: int, auth_cookie: str) -> None:
    Form.__init__(self)
    CsrfForm.__init__(self)
    CaptchaForm.__init__(self)
    self.text: str = text
    self.description: str = description
    self.category_id = category_id
    self.auth_cookie = auth_cookie

Какое наследование )))

Запостил: gost gost, (Updated )

Комментарии (29) RSS

  • так это же типичное питоновно

    Нужно конструкторы предков вызвать, и все поля вручную проставить.
    Кажется, потому датаклассы и завезли, не?

    >self.text: str =
    >self.category_id

    обожаю это говно
    где-то пишем тип, где-то не пишем...
    Ответить
    • > где-то пишем тип, где-то не пишем...
      Это неявная типизация же, тип выводится из типа аргумента коньструктора. Хотя с text и description проёб, да.

      Ну, знаешь, как сначала делают везде обязательные явные типы, лет десять-двадцать их кушают, а потом изобретают var/let/val/auto.
      Правда, я гаедлайны по питоновской типизации не читал, так что хз.
      Ответить
      • >проёб
        угу. Но у тебя еще не самый адский вариант, я видал код, где часть параметров даже не выводится.

        А у тебя VSCode умеет эти аннотации парсить, и делать кодинсайт? Пайшарм вот умеет.

        Вывод типов это всё таки другое: там статическая типизация обязательна, просто ее можно посчитать. А в питоне ж нет.

        >гаедлайны
        Хуй знает, где есть такие. Я бы почитал. Пока что кажется, что в публичном API лучше всегда указывать типы, а в скриптушне для себя -- нет
        Ответить
        • > А у тебя VSCode умеет эти аннотации парсить, и делать кодинсайт?
          Разумеется, там и официальные расширения (от «Майкрософта») для этого есть, и ещё куча разных. Я использую стандартный «mypy», он довольно качественно работает. «Pyright» не понравился, какие-то траблы были, а вот сейчас активно развивается «Pylance» — надо бы глянуть как-нибудь.

          > а в скриптушне для себя -- нет
          Я и в скриптушне добавляю. Периодически отлавливаю разные глупые очепятки. А вообще стараюсь делать так, чтобы у каждой пельменной «mypy» хотя бы выводил тип.
          Ответить
          • И как там с комплишеном? Умеет ли восстанавливаться парсер, или при одной синтаксической ошибке все красное?
            Мне просто сказалось, что mypy делался не для ide, а для валидации кода потом, как линтер

            >Я и в скриптушне добавляю.
            Может, пора на typescript?
            Ответить
            • Да всё более-менее заебись, ошибки подчёркивает, «IntelliSense»/«IntelliCode» работают.

              > Мне просто сказалось, что mypy делался не для ide, а для валидации кода потом, как линтер
              Ну, ЕМНИП, оно так и есть, только в «VSCode» его прикрутили динамически.

              > Может, пора на typescript?
              Не, воздержусь.
              Ответить
              • ну у тебя нету ощущения, что вместо натягивания тупизации на питухона, лучше бы сразу взять статически тупизированый изык?
                Ответить
                • Мне не нравится, что «TypeScript» нужно конпелировать. Я путуха использую для максимально простого, кхм, деплоя в виде загрузки файликов на сервер по «FTP». Когда мне нужен мощный компилируемый статически типизированный язык — я беру «C++».
                  Ответить
                  • Почему зачеркнутым? Именно поэтому я за «PHP».
                    Ответить
                    • Потому что я их загружаю по «SFTP».
                      А если серьёзно, то у путуха чуть более сложный деплой: надо «gunicorn» ставить, юниты создавать, все дела.
                      Ответить
                      • Я не понял, причем тут язык.

                        Ты можешь использовать mod_python, и будет тоже самое что и с пыхокалом.

                        А если в пыхокале ты будешь использовать fcgi_fpm то его тоже надо ставить, и юниты создавать
                        Ответить
                        • > mod_python
                          Любопытно, не слышал про такое извращение.

                          > Я не понял, причем тут язык.
                          Скорее, не язык, а сложившаяся практика его применения.
                          Ответить
                          • Оно вполне себе существует на каких-то шаредах, и работает примерно как и в пыхе: интерпретатор питона загружается в адресное простраство апача и там работает
                            Есть еще mod_wsgi, кажется он депрейетнул mod_python.

                            >практика
                            Это правда

                            Хотя про запуск пыха в отдельном процессе и связывании его по fast cgi даже Конардо говорил
                            Ответить
                  • Понятно. Ну, деплой же обычно всё равно автоматизирован: миграции накатить, статику пересобрать клиенсткую, локализацию, вот это всё.

                    Правда, это в больших проектах конечно

                    >я беру «C++».
                    ты сравнил) есть же всякие золотые середины типа kotlin, правда нужно жвм иметь
                    Ответить
                    • > Правда, это в больших проектах конечно
                      Подтверждаю. Для мелких проектов вроде «NGK» это несколько излишне (хотя наш инженерный отдел уже давно хочет прикрутить эту тему, хотя бы для общего развития). А сейчас наши путухоновские проекты деплоятся как в этой статье: https://habr.com/post/512550/ (только без шкриптов и ЙАЖИ).
                      Ответить
                      • У меня один петпроджект деплоится как раз шел скриптом на сервере, который делает git pull, накатывает миграции, собирает статику и локализацию, и перезапускает gunicorn.

                        А в другом петпроекте делается тоже самое, но удаленно: там используется fabric, и запускать его нужно на своей машине, по историческим причинам.
                        Ответить
      • > Ну, знаешь, как сначала делают везде обязательные явные типы, лет десять-двадцать их кушают, а потом изобретают var/let/val/auto.

        Ага. А потом засирают этими var/let/val/auto код настолько, что чтобы его понять, приходится вводить обязательные гайдлайны на уровне проекта, где описывать кейсы, когда эти самые var/let/val/auto нужно применять, а когда — лучше написать просто int.
        Ответить
        • Пишешь код в блокноте что ли? Или тринадцать замыканий одно в другом?
          Ответить
          • > пишешь код в блокноте

            Читаешь ревью в браузере. Грузить ветку в IDE то не особо удобно.
            Ответить
            • Ок. Приведи, пожалуйста, какой-то пример, когда отсутствие аннотации типа реально затрудняет ревью.
              Ответить
              • Мне самому в голову пришёл пример лол

                let value = getSomeCounterWhatever()
                
                // Без поллитра не разобраться, signed тут или unsigned
                let doubleValue = value * 2


                Я забыл, что сишники и крестовики скилловые и думают про переполнения
                Ответить
              • Да банально когда функция вернула число и хочется понять какого оно типа. А там ехал авто через авто.

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

                З.Ы. Ну и если первый раз этот код видишь и с типами которые там юзаются ещё не знаком, auto сильно затрудняет понимание.
                Ответить
            • Ну кстати плюсану

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

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8