From f1bbf9c308885648c2ecce611e975d21f220edf3 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 27 Oct 1993 09:28:23 +0000 Subject: Add coercions --- Demo/classes/Rat.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Demo/classes/Rat.py b/Demo/classes/Rat.py index 0b2519d..0d3e515 100755 --- a/Demo/classes/Rat.py +++ b/Demo/classes/Rat.py @@ -52,12 +52,18 @@ class Rat: raise TypeError, 'Rat.__coerce__: bad other arg' def __add__(a, b): + if type(b) <> type(a): + a, b = a.__coerce__(b) + return a + b return rat(a.num*b.den + b.num*a.den, a.den*b.den) def __sub__(a, b): return rat(a.num*b.den - b.num*a.den, a.den*b.den) def __mul__(a, b): + if type(b) <> type(a): + a, b = a.__coerce__(b) + return a * b return rat(a.num*b.num, a.den*b.den) def __div__(a, b): @@ -78,9 +84,13 @@ def test(): l.sort() print l print rat(0, 1) - print rat(1, 0) print a+1 print a+1L print a+1.0 + try: + print rat(1, 0) + raise SystemError, 'should have been ZeroDivisionError' + except ZeroDivisionError: + print 'OK' -test() +#test() -- cgit v0.12