I was having a go at a simple implementation of Maybe in Python when I stumbled on a case where x.__mul__(y) is defined while x*y is not.
__special__ methods are searched in the type, not in the instance directly. x*y looks for type(x).__mul__ (among other things)
-- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list