Rational类实现了有理数运算,但是,如果要把结果转为 int 或 float 怎么办?
考察整数和浮点数的转换:
>>> int(12.34) 12 >>> float(12) 12.0
如果要把 Rational 转为 int,应该使用:
1 r = Rational(12, 5) 2 n = int(r)
要让int()函数正常工作,只需要实现特殊方法__int__():
1 class Rational(object): 2 def __init__(self, p, q): 3 self.p = p 4 self.q = q 5 def __int__(self): 6 return self.p // self.q
结果如下:
1 >>> print int(Rational(7, 2)) 2 3 3 >>> print int(Rational(1, 3)) 4 0
同理,要让float()函数正常工作,只需要实现特殊方法__float__()
请继续完善Rational,使之可以转型为float。
1 class Rational(object): 2 def __init__(self, p, q): 3 self.p = p 4 self.q = q 5 6 def __int__(self): 7 return self.p // self.q#整数取整“//” 8 9 def __float__(self): 10 return float(self.p)/self.q#浮点数除法“/” 11 12 print float(Rational(7, 2)) 13 print float(Rational(1, 3))
python进阶五(定制类)【5-5 python中类型转换】
原文:https://www.cnblogs.com/ucasljq/p/11626768.html