Trên Python 2.5 Tôi cần sử dụng các số phao với phương pháp __str__()
đã sửa đổi. Ngoài ra tôi cần phải biết khi nào constructor thất bại.Loại phao phân lớp trong Python, không bắt ngoại lệ trong __init __()
Tại sao tôi không thể bắt ngoại lệ được nêu từ float.__init__()
?
Cách tốt nhất để tham khảo giá trị số của đối tượng nổi có nguồn gốc của tôi là gì? Trong mã của tôi, tôi đang sử dụng 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
Hoạt động !, cảm ơn lời giải thích. – Ricardo