On Tue, Oct 11, 2016 at 02:41:34PM +0200, Sven R. Kunze wrote: > Hey python-ideas, > > on django-developers, an intriguing idea appeared: > https://groups.google.com/d/msg/django-developers/4bntzg1HwwY/HHHjbDnLBQAJ > > """ > It seems to me that the default `method.__bool__` is undesirable in > Jinja2 templates. I do not know Jinja2 well enough, but maybe they could > benefit from a patch where `if`-statements give a warning/error when the > expression is a callable (with the default `FunctionType.__bool__`? > This would solve the issue not just for the methods you mention, but > more in general.
That should be easy enough to do as a custom descriptor. But I would not like to see the default function or method __bool__ raise a warning. Consider processing a sequence of functions/methods, skipping any which are None: for func in callables: if func is not None: func(some_arg) I often written code like that. Now imagine that somebody reasons that since all functions and methods are truthy, and None if falsey, we can write the code as: for func in callables: if func: func(some_arg) That's perfectly reasonable code too, and it should be purely a matter of taste whether you prefer that or the first version. But with this suggestion, we get flooded by spurious warnings. So I think this is something that Django/Jinja2 should implement for its own methods that need it, it should not be a general feature of all Python functions/methods. -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/