免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1173 | 回复: 0
打印 上一主题 下一主题

类的专有方法疑问,求大神指点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-31 15:35 |只看该作者 |倒序浏览
本帖最后由 aingwen 于 2014-10-31 15:55 编辑

先上代码:
  1. class Money():
  2.     def __init__(self,value=0.0):
  3.         self.value = float('%.2f' % value)
  4.     #def __repr__(self):
  5.         #return 'self.value'
  6.     def __str__(self):
  7.         s = [color=Red]str(self.value)[/color].split(".")
  8.         t = list(s[0])
  9.         if  s[0].startswith("-"):
  10.             n = len(t)-1
  11.         else:
  12.             n = len(t)
  13.         for i in range(3,n,3):
  14.             j = i + i/3 -1
  15.             t[-j:-j-1]=','
  16.         if t[0] == "-":
  17.             t.remove("-")
  18.             t = "".join(t)
  19.             val = "-$%s" % (".".join([t,s[1]]))
  20.             return val
  21.         else:
  22.             t = "".join(t)
  23.             val = "$%s" % (".".join([t,s[1]]))
  24.             return val
  25.     #def __nonzero__(self):
  26.            # return bool(self.value)
  27. a = Money(2345.3333)
  28. print a
复制代码
这个类的目的是将输入的数值转换成以$ 开头的钱格式,如: 2345.3333  ==》 $2,345.33  -234.5678 ==》 -$234.57
问题1: 输入0的时候结果显示 $0.0 而不是 0.0
问题2: __str__() 它不是已经自动调用str()了吗,为啥我把  代码中红色那里的str()去掉就会报错,不是太理解__str__(),
问题3: __repr__() 和上面那个问题一样,没明白什么时候才是适合用;
问题4:  __nonzero__(self)  去掉或不去掉好像没什么不同,不理解什么情况下才是它发挥作用的时候

以上几个问题跪求各位大神指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP