Python: Can I overload the raise statement with def __raise__(self):? -
यहाँ मेरा अपवाद वर्ग है जो raise का उपयोग कर रहा है:
वर्ग एससीई (अपवाद): "" "एससीई कार्यों का प्रदर्शन करते समय एक त्रुटि" "" डीईएफ़ __इनट __ (आत्म, मान = कोई नहीं): "" संदेश: एक स्ट्रिंग संदेश या स्ट्रिंग के एक पायदान। "" अगर मान कोई नहीं : Self._values = [] elif isinstance (मान, str): self._values = [value] else: self._values = list (value) def __raise __ (self): प्रिंट ('raising') अगर नहीं लेन (स्वयं। _values) वापस आइएआर (self._values) def __repr __ (स्वयं): वापसी repr (self._values)
): रिटर्न डेफ __str __ (स्व): वापसी स्वयं .__ repr __ () def __iter __ वर्तमान में अगर मैं इस अपवाद को बिना किसी मूल्य के लिए बढ़ाता हूं, तो मुझे बाद में ट्रेसबैक मिलता है:
__ मुख्य __। SCE: []
इसके बजाय मुझे क्या उम्मीद थी जो था:
<पूर्व> r Aising & gt; & gt; & gt;
आप अधिभार कैसे करें raise
?
जैसा कि दूसरे उत्तर कहते हैं, कोई भी __ उठाना नहीं है कोड> विशेष विधि 2004 में comp.lang.python पर एक धागा था, जहां किसी ने इस तरह की विधि जोड़ने का सुझाव दिया, लेकिन मुझे नहीं लगता कि इसके लिए कोई फॉलो-अप हो। एकमात्र तरीका मैं अपवाद को हुक करने के बारे में सोच सकता हूं या तो दुभाषिए को पैचिंग करके या किसी प्रकार का स्रोत या बाइटकोड फिर से लिख रहा है जो कि बढ़ाने की कार्रवाई के बगल में फ़ंक्शन कॉल को सम्मिलित करता है।
Comments
Post a Comment