python进阶五(定制类)【5-5 python中类型转换】

python中类型转换

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))

猜你喜欢

转载自www.cnblogs.com/ucasljq/p/11626768.html