파이썬 2.5에서는 float 숫자를 수정 된 __str__()
메소드와 함께 사용해야합니다. 또한 생성자가 실패 할 때도 알 필요가 있습니다.파이썬에서 서브 클래스 float 타입은 __init에서 예외를 포착하지 못합니다 __()
float.__init__()
에서 발생하는 예외를 잡을 수없는 이유는 무엇입니까?
파생 된 float 객체의 숫자 값을 참조하는 가장 좋은 방법은 무엇입니까? 내 코드에서 나는 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
작동!, 설명 주셔서 감사합니다. – Ricardo