Почему это не работает, как можно было наивно ожидать?
class Foo(object): def __init__(self): self.bar = 3 def __bool__(self): return self.bar > 10 foo = Foo() if foo: print 'x' else: print 'y'
(Вывод x)
x