> This is something I felt comfortable exploring very early on - to the > extent of having overused it. I would hate to see you back-end that, as > I think it is kind of fun to play with. "let's change the boring old > rules of math..." kind of thing. >
Yes, operator overloading is a big part of my "math through programming" curriculum. You want your * and + operators to be "modulo N" for example, the better to appreciate group theory. Or we might use * to mean 'compose' as in: >>> def f(x): return 2*x + 1 >>> def g(x): return x**2 >>> class F(object): def __init__(self, func): self.func = func def __mul__(self, other): return F(lambda x: self.func(other.func(x))) def __call__(self,x): return self.func(x) >>> of = F(f) >>> og = F(g) >>> of(2) 5 >>> f(g(2)) 9 >>> h = of*og >>> h(2) 9 >>> j = og*of >>> j(2) 25 I think where a lot of kids will first encounter underunder is not in __init__ but in __name__, as in that "__name__ == '__main__'" trick for getting scripts to run at the command line, even as they also serve as class & function repositories for snake charmers in a Python shell. Kirby PS: since you've been studying subclassing primitive types using __new__, maybe you could show us a user-defined floating point type that reports two numbers equal if their absolute value difference is less than e. Anyone? _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig