[Python-ideas] warn/error when using a method as boolean in ifs/whiles
Sven R. Kunze
srkunze at mail.de
Tue Oct 11 08:41:34 EDT 2016
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.
[Or maybe Python itself should have that warning/error?]
"""
Background:
Django implemented form.is_valid as a function. During development,
people fall into the trap of believing it's a property or boolean
attribute. That's usually not big deal but can take substantial amount
of time when writing non trivial code among which reside following
innocuous-looking lines:
if obj.has_special_property:
# will always
# be executed
What do you think about that Python emitting an warning/error as
described above?
Cheers,
Sven
More information about the Python-ideas
mailing list