मान्य नहीं है। ब्रायन anwser की जांच करें।
ठीक है, मैं सिर्फ यह मिल गया:
for x in Exception("test") :
print x
....:
....:
test
;-)
परेशान न हों वैसे भी, यह पता करने के लिए अच्छा है।
संपादित करें: टिप्पणियों को देखते हुए, मुझे कुछ स्पष्टीकरण जोड़ने लगता है।
एक अपवाद संदेश आप इन्स्टेन्शियशन दौरान करने के लिए पारित कर दिया शामिल हैं:
print Exception("test")
test
:
raise Exception("test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: test
यह कहना() वापस करती है कि संदेश क्या अपवाद सबसे अच्छी तरह परिभाषित है, इसलिए str उचित है
अब, ऐसा होता है कि अपवाद संदर्भ में कुछ और में उपयोग किए जाने पर अपवादों को पूरी तरह से स्ट्रिंग में परिवर्तित कर दिया जाता है।
तो मैं जब कार्य करें:
for x in Exception("test") :
print x
मैं स्ट्रिंग "परीक्षण" से अधिक पुनरावृत्ति कर रहा हूँ।
और जब मैं करता हूँ:
for x in Exception() :
print x
मैं कोई रिक्त स्ट्रिंग से अधिक पुनरावृति है। मुश्किल। क्योंकि जब यह अपनी समस्या से आता है:
try :
thing.merge(ExceptionLikeObject)
except TypeError :
...
के बाद से ExceptionLikeObject स्ट्रिंग के रूप में माना जाता है यह कुछ भी आगे नहीं बढ़ेगी।
ठीक है, हम जानते हैं कि कैसे, लेकिन मैं अभी भी क्यों नहीं हूं। हो सकता है कि बिल्ट-इन अपवाद अंतर्निहित स्ट्रिंग से प्राप्त हो? क्योंकि जहाँ तक मैं जानता हूँ कि:
- str जोड़ने किसी भी वस्तु iterable नहीं है।
- मैंने iter ओवरलोडिंग द्वारा समस्या को छोड़ दिया, जिससे इसे टाइपररर बढ़ाया गया!
अब कोई समस्या नहीं है, लेकिन फिर भी एक रहस्य है।
ब्रिलेंट! स्पष्टीकरण के लिए Thx। मैं जवाब स्वीकार करना चाहता हूं लेकिन ऐसा लगता है कि मुझे अनुमति देने से पहले कुछ और वोट चाहिए। –