Andrea Crotti <andrea.crott...@gmail.com> wrote: > I'm not sure for how long I had this bug, and I could not understand > the problem. > > I had a function which would return a boolean > > def func_bool(): > if x: > return True > else: return False > > Now somewhere else I had > > if func_bool: > # do something > > I could not quite understand why it was always true, until I finally > noticed that the () were missing. > Is there some tool to avoid these stupid mistakes? (pylint doesn't > warn me on that) > I don't think I will ever (or almost) have to use a function as a > boolean, instead of its return value...
For this particular example why don't you just write 'if x: # do something'? More generally rather than having a global function make it a property on an object. class Snark: def __init__(self, something): self.boojum = ... @property def is_a_bookum(self): return self.boojum hunted = Snark(whatever) Then you can write: if hunted.is_a_boojum: self.vanish_away() -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list