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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
def __call__(self, *args, **kw):
    # ...
    if args and len(args) > 1 and args[0] is args[1][0]:
        # fml...
        temp = list(args)
        temp.pop(1)
        args = tuple(temp)
    return self._execute(*args, **kw)

Быль про архитектуру.

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

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

  • temp = list(args)
    temp.pop(1)
    args = tuple(temp)
    args[1:], не? Не, вру... но args[0:1]+args[2:] сработает

    А вот зачем понадобилось проверять что args[0] is args[1][0] для меня загадка.
    На таком фоне условие args and len(args) > 1 это так, мелочи.
    Хотя можно было сделать
    def __call__(self, arg1, arg2, *args, **kw):
    И никаких проверок не надо...
    Ответить
    • ОК... там очень долго объяснять, но фишка в том, что вокруг этого несчастного класса понаписано надцать оберток, которые переопределяют __call__() по-всякому. В итоге, в некоторых ситуациях один и тот же аргумент, который передается в эту функцию передается и как первый аргумент и как список из одного элемента - вторым аргументом. Ну как бы это сказать: человек писал, писал, творил, можно сказать, и в итоге вот так вот получилось, что хрен распутаешь.
      Т.е. что делает это условие: отлавливает те ситуации, когда вышеописаная неведомая херня таки случилась, и убирает второй аргумент (т.как он и не нужен никогда, он случайно туда попал).
      Ответить

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

Где здесь C++, guest?!

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


    8