为了账号安全,请及时绑定邮箱和手机立即绑定

__float__()疑问

class Rational(object):
   def __init__(self, p, q):
       self.p = p
       self.q = q

   def __int__(self):
       return int(self.p/self.q)

   def __float__(self):
       return float(self.p) / self.q

print int(Rational(7, 2))
print float(Rational(1, 3))

以上程序中,return float(self.p)/self.q

不能改成return self.p/self.q吗?   "/"除法结果不就是浮点型了吗,还要加float?

正在回答

3 回答

你说的我在Python3中试了下,可以不用加float()。

1 回复 有任何疑惑可以回复我~

数字运算和类的运算法则是不一样的,类的运算需要方法。直接print 1/3是没有问题,确实是浮点型,也就是0.33333333,但是涉及到类,大部分函数都需要方法,因为类的属性不能简单看成字符、数值等。

__int__,__str__都是类的方法。

1 回复 有任何疑惑可以回复我~

两个整数除 结果仍然是整数

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

__float__()疑问

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号