1. Python / Говнокод #16794

    −98

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    def down_cast_qobject(tp, obj):
        assert obj
        assert isinstance(tp, type)
        assert issubclass(tp, QObject)
        addresses = shiboken.getCppPointer(obj)
        assert isinstance(addresses, collections.Iterable)
        assert len(addresses)
        ptrs = filter(lambda p: p > 0L, addresses)
        assert ptrs
        ptr = ptrs[0]
        assert isinstance(ptr, long)
        wrapped = shiboken.wrapInstance(ptr, tp)
        assert isinstance(wrapped, tp)
        return wrapped

    Paranoid_mode = True

    Запостил: QBatman, 03 Октября 2014

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

    • "Yes I'm paranoid - but am I paranoid enough?"

      кто-то попытался динамические типы к реальности пригвоздить. но без читабельных сообщений, выглядит говновато.
      Ответить
    • QParanoid.QMode = QTrue
      Ответить
      • ты забыл
        assert getattr(module, 'QParanoid')
        assert QTrue
        assert QTrue == QTrue
        assert QTrue != QFalse
        assert QTrue == QTrue == QTrue
        assert QTrue == QTrue == QTrue == QTrue
        assert QTrue == QTrue == QTrue == QTrue == QTrue
        assert QTrue == QTrue == QTrue == QTrue == QTrue == QTrue
        assert QTrue == QTrue == QTrue == QTrue == QTrue == QTrue == QTrue
        assert QTrue == QTrue == QTrue == QTrue == QTrue == QTrue == QTrue == QTrue
        # ... ad infinitum
        Ответить
        • Проверяем калибровку вселенной
          assert -1 == 12 * sum(natural_numbers())
          Ответить
          • Вот. Всё хотел спросить, сможет ли хвалённый Хаскель со своими "бесконечными" списками вычислить -1/12.
            Ответить
            • Тоже интересно. Разбирающиеся, расскажите!
              Ответить
            • > сможет ли хвалённый Хаскель со своими "бесконечными" списками вычислить -1/12

              Да, если написать плагин для GHC.

              А ты сам, если будешь долго складывать натуральные, быстро получишь - 1/12 ?
              Ответить
              • >если будешь долго складывать натуральные, быстро получишь - 1/12 ?
                Оперируя бесконечными спискамирядами - да.

                Спущусь к более понятной и тривиальной аналогии:
                Вас никогда не удивлял результат подстановки степеней двойки в формулу суммы геометрической прогрессии (которая получается тривиальнейшим умножением бесконечного ряда на 1-q).
                S=1(1-2)=1/-1=-1.
                И когда Вселенная переполняется и там получается -1. Haskell так умеет?
                Ответить
                • Да он вроде бы и просто геометрические прогрессии не может.
                  Ответить
                  • iterate (*5) 1
                    Ответить
                  • Язык Хаскель не сможет, а вот язык Сриниваса, или Леонард сократил бы в два счёта.
                    А еще говорят "ленивый". Ленивый до бесконечности считать не будет.
                    Он сократит, чтобы вся эта бесконечность взаимоуничтожилась.
                    Ответить
                • http://codegolf.stackexchange.com/a/28661 во!
                  Ответить
                  • . uncurry quotRem . flip
                    ( (***) <$> id <*> id )
                    ( second negate twinPrime )
                    <$> (+) . flip shiftR 2
                    . ord . head
                    where twinPrime = (5,7)

                    Казалось причем тут (5+7)? А также negate и quotRem.
                    Ответить
            • смог

              https://ideone.com/sIERvf
              Ответить
              • Длинно. Даже на браузерном жс можно короче.
                Ответить
              • Слишком приближенно.

                https://ideone.com/aDi8FZ
                Ответить
        • Тогда уж QAssert qGetAttr(qCurrentModule(), QString("QParanoid"))
          А то что какие-то полумеры...
          Ответить
        • assert(assert);
          Ответить
    • То что случается с типизированными людьми при попадении в питон.
      Ответить
    • Мне вообще так нравится момент проверки всего и нейминг переменные. Я назову метод и параметры шоб было непонятно, а если что то будет не так потому что непонятно что хотят то пошлю на хуй.
      Ответить
    • Да не, дело не в борьбе за типы, это ж какая-то обертка над Ц++ библиотекой. От них выброса ошибок не дождешься. Конечно, можно было в самом конце проверить результат, но иногда хочется узнать по-подробнее, что же именно пошло не так.
      Ответить
    • assert же только в дебаг моде работает?
      Ответить
      • The extended form, ``assert expression1, expression2``, is equivalent to
        if __debug__:
            if not expression1: raise AssertionError(expression2)

        Но In the current implementation, the built-in variable ``__debug__`` is ``True`` under normal circumstances, ``False`` when optimization is requested (command line option -O).
        Ответить

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