在Python 2.5上,我需要使用帶有修改的__str__()
方法的浮點數。另外我需要知道構造函數何時失敗。Python中的子類float類型無法捕獲__init中的異常__()
爲什麼我無法捕捉到從float.__init__()
引發的異常?
請教我的派生的浮動對象的數值的最佳方法是什麼?在我的代碼中,我使用的是float(self)
。
class My_Number(float):
def __init__(self, float_string):
try:
super(My_Number, self).__init__(float_string)
except (TypeError, ValueError):
raise My_Error(float_string)
def __str__(self):
if int(float(self)) == float(self):
return str(int(float(self)))
else:
return str(round(float(self), 2))
>>> n = My_Number('0.54353')
>>> print n
0.54
>>> n = My_Number('5.0')
>>> print n
5
>>> n = My_Number('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): foo
Works !,感謝您的解釋。 – Ricardo 2009-12-20 18:20:38