Neal Becker wrote:
Want to switch __call__ behavior. Why doesn't this work? What is the correct way to write this?

class X (object):
    def __init__(self, i):
        if i == 0:
            def __call__ (self):
                return 0
        else:
            def __call_ (self):
                return 1


x = X(0)

x()
TypeError: 'X' object is not callable


I think it's because X has already been constructed when __init__ is called, so __new__ is the place for your conditional code.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to