Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2013 16:45:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

Вот так, порой, небольшая ошибка может сломать голову кардинально

class Base(object):
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_superuser:
            return super(Base, self).dispatch(request, *args, **kwargs)
        try:
            p = Plumbing.objects.all()[0].is_closed
            if p:
                self.template_name = "plumbing.html"
        except IndexError:
            pass
        return super(Base, self).dispatch(request, *args, **kwargs)
Здесь
p = Plumbing.objects.all()[0].is_closed
я забыл вызвать метод, то есть было
p = Plumbing.objects.all()[0]
if p:
И тогда наблюдаем удивительную вещь
p = Plumbing.objects.all()[0]
print p
if p:
    Условие выполняется
p = Plumbing.objects.all()[0]
if p:
    А без принта не выполняется :)
на моей и так лысой бошке сегодня конкретно уменьшилось волос



Отредактировано FishHook (Ноя. 16, 2013 16:58:59)

Офлайн

#2 Ноя. 16, 2013 17:37:48

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Рубрика "Чудеса"

Вот из последнего, к счастью обошлось без облысения:

for item in useful_container:
    #...
    if something in useful_container:
        """..."""
    #...
Если `useful_container` окажется итератором, желательно с неопределённым порядком, будут перечислены не все элементы.

..bw



Отредактировано bw (Ноя. 16, 2013 17:38:11)

Офлайн

#3 Ноя. 18, 2013 14:08:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

FishHook
я забыл вызвать метод, то есть было
какой метод ? там только обращение к атрибуту



Офлайн

#4 Ноя. 18, 2013 14:21:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

py.user.next,
Да, Вы правы, я неверно выразился.



Офлайн

#5 Ноя. 18, 2013 18:48:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

FishHook
И тогда наблюдаем удивительную вещь
так а в чём вещь-то ? как print влияет на p ?



Офлайн

#6 Ноя. 18, 2013 19:23:25

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

py.user.next
так а в чём вещь-то ? как print влияет на p ?
__str__ меняет атрибуты, ипользуемые __bool__'ом - очевидно же

Офлайн

#7 Ноя. 18, 2013 20:23:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

sergeek
__str__ меняет атрибуты, ипользуемые __bool__'ом - очевидно же
это ещё зачем ?

во втором питоне нет __bool__



Отредактировано py.user.next (Ноя. 18, 2013 20:24:46)

Офлайн

#8 Ноя. 18, 2013 21:02:56

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Рубрика "Чудеса"

Зато есть __nonzero__, суть та же.

..bw



Офлайн

#9 Ноя. 19, 2013 08:22:07

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

sergeek
__str__ меняет атрибуты, ипользуемые __bool__'ом - очевидно же
Ад



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Ноя. 19, 2013 10:56:14

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Рубрика "Чудеса"

sergeek
__str__ меняет атрибуты, ипользуемые __bool__'ом - очевидно же
это вряд ли, скорее в действии lazyness

что возвращает эта конструкция?
FishHook
Plumbing.objects.all()[0]

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version