- 论坛徽章:
- 0
|
本帖最后由 aingwen 于 2014-10-31 15:55 编辑
先上代码:- class Money():
- def __init__(self,value=0.0):
- self.value = float('%.2f' % value)
- #def __repr__(self):
- #return 'self.value'
- def __str__(self):
- s = [color=Red]str(self.value)[/color].split(".")
- t = list(s[0])
- if s[0].startswith("-"):
- n = len(t)-1
- else:
- n = len(t)
- for i in range(3,n,3):
- j = i + i/3 -1
- t[-j:-j-1]=','
- if t[0] == "-":
- t.remove("-")
- t = "".join(t)
- val = "-$%s" % (".".join([t,s[1]]))
- return val
- else:
- t = "".join(t)
- val = "$%s" % (".".join([t,s[1]]))
- return val
- #def __nonzero__(self):
- # return bool(self.value)
- a = Money(2345.3333)
- 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) 去掉或不去掉好像没什么不同,不理解什么情况下才是它发挥作用的时候
以上几个问题跪求各位大神指点 |
|