Wallacoloo Wallacoloo - 1 month ago 11
Python Question

overriding bool() for custom class

All I want is for bool(myInstance) to return False (and for myInstance to evaluate to False when in a conditional like if/or/and. I know how to override >, <, =)

I've tried this:

class test:
def __bool__(self):
return False

myInst = test()
print bool(myInst) #prints "True"
print myInst.__bool__() #prints "False"


Any suggestions?

(I am using Python 2.6)

Answer

Is this Python 2.x or Python 3.x? For Python 2.x you are looking to override __nonzero__ instead.

class test:
    def __nonzero__(self):
        return False