Boolean value of objects in Python
Solution 1:
In Python < 3.0 :
You have to use __nonzero__
to achieve what you want. It's a method that is called automatically by Python when evaluating an object in a boolean context. It must return a boolean that will be used as the value to evaluate.
E.G :
class Foo(object):
def __init__(self, bar) :
self.bar = bar
def __nonzero__(self) :
return self.bar % 2 == 0
if __name__ == "__main__":
if (Foo(2)) : print "yess !"
In Python => 3.0 :
Same thing, except the method has been renamed to the much more obvious __bool__
.
Solution 2:
In Python 2, use __nonzero__
:
Refer to the Python 2 docs for __nonzero__
.
class foo(object):
def __nonzero__( self) :
return self.bar % 2 == 0
def a(foo):
if foo:
print "spam"
else:
print "eggs"
def main():
myfoo = foo()
myfoo.bar = 3
a(myfoo)
if __name__ == "__main__":
main()