पर अपवाद पकड़ने में विफल रहता है Python 2.5 पर मुझे एक संशोधित __str__()
विधि के साथ फ्लोट नंबरों का उपयोग करने की आवश्यकता है। इसके अलावा मुझे यह जानने की जरूरत है कि जब निर्माता विफल रहता है।पायथन में उप-वर्गीकरण फ्लोट प्रकार, __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
काम करता है !, स्पष्टीकरण के लिए धन्यवाद। – Ricardo