Monday, February 21, 2011

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)

From stackoverflow
  • test.__nonzero__()

  • Is this Python 2.x or Python 3.x? I think for Python 2.x you are looking to override __nonzero__() instead?

    class test:
        def __nonzero__(self):
            return False
    
  • If you want to keep your code forward compatible with python3 you could do something like this

    class test:
        def __bool__(self):
            return False
        __nonzero__=__bool__
    

0 comments:

Post a Comment