मैं पायथन में स्ट्र ऑब्जेक्ट्स की जांच कर रहा था, और मुझे एहसास हुआ कि पायथन 2.7 में स्ट्र ऑब्जेक्ट में __iter__()
विधि और न ही next()
विधि है, जबकि पायथन 3.0 स्ट्र ऑब्जेक्ट्स में __iter__()
विधि है, और इस प्रकार वे पुन: प्रयोज्य हैं। हालांकि, मैं अभी भी स्ट्र ऑब्जेक्ट्स का उपयोग कर सकता हूं जैसे कि वे पाइथन 2.7 में पुनरावृत्त हैं। उदाहरण के लिए, मैं उन्हें लूप के लिए उपयोग कर सकता हूं। यह कैसे काम करता है?स्ट्र ऑब्जेक्ट में __iter__ नहीं है, फिर भी यह पुनरावर्तनीय कार्य करता है। क्यूं कर?
6
A
उत्तर
4
सरल उत्तर: क्योंकि iter(s)
एक पुनरावृत्त वस्तु देता है।
लंबा उत्तर: iter()
__iter__()
विधि की तलाश करता है, लेकिन यदि यह कोई नहीं मिलता है तो यह निर्माण और पुनरावर्तक स्वयं की कोशिश करता है। __getitem__()
का समर्थन करने वाला कोई भी ऑब्जेक्ट 0 से शुरू होने वाले पूर्णांक इंडेक्स के साथ एक साधारण इटरेटर बनाने के लिए उपयोग किया जा सकता है। __getitem__()
सूची/स्ट्रिंग इंडेक्सिंग ऑपरेशंस के पीछे फ़ंक्शन है, उदाहरण के लिए s[0]
।
>>> "abc".__iter__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute '__iter__'
>>> iter("abc")
<iterator object at 0x1004ad790>
>>> iter("abc").next()
'a'
विवरण के लिए here देखें।
संबंधित मुद्दे
- 1. मुख्य कार्य कुछ भी वापस नहीं करता है। क्यूं कर?
- 2. "यह पृष्ठभूमिवर्कर कहता है कि यह प्रगति की रिपोर्ट नहीं करता है।" - क्यूं कर?
- 3. जावास्क्रिप्ट "यह" विंडो ऑब्जेक्ट को फिर से इंगित करता है
- 4. पुनरावर्तनीय ऑब्जेक्ट कोड जनरेशन C++
- 5. सिस्टम। डायग्नोस्टिक्स.प्रोसेस.आईडी कार्य प्रबंधक में दिखाए गए वही प्रक्रिया आईडी नहीं है। क्यूं कर?
- 6. ऑब्जेक्ट (यह) क्या करता है?
- 7. कुछ भी नहीं! = शून्य - या यह करता है?
- 8. वृद्धि चरित्र काम करता है लेकिन जोड़ना नहीं करता है। क्यूं कर?
- 9. क्या जावा कास्टिंग ओवरहेड पेश करता है? क्यूं कर?
- 10. निष्पादन फ़ाइलों को लॉक करना: विंडोज करता है, लिनक्स नहीं करता है। क्यूं कर?
- 11. पायथन - __iter__ लागू करें या एक सूची __iter__
- 12. संभव नहीं है: यह सूचक डिफ़ॉल्ट तर्क के रूप में है। क्यूं कर?
- 13. जावास्क्रिप्ट में मूल ऑब्जेक्ट/फ़ंक्शन चेनिंग कार्य कैसे करता है?
- 14. मेरा मोक दावा क्यों नहीं करता है कि कोई भी आमंत्रण फेंक दिया जा रहा है, फिर भी यह अपवाद में फेंक दिया गया आमंत्रण प्रदर्शित करता है?
- 15. विफल रहता है, लेकिन कोई त्रुटि ऑब्जेक्ट वापस नहीं किया जाता है। क्यूं कर?
- 16. प्रदर्शन करता है: कोई नहीं अभी भी
- 17. एक्सकोड अब एक खाली श्रेणी उत्पन्न करता है। क्यूं कर?
- 18. रूबी 'रेंज.स्टास्ट' अंतिम मूल्य नहीं देता है। क्यूं कर?
- 19. पायथन - tempfile.TemporaryFile पढ़ा नहीं जा सकता है; क्यूं कर?
- 20. जावा सर्वर 32-बिट में काम करता है, लेकिन 64-बिट में नहीं। क्यूं कर?
- 21. 'बराबर()' झूठा रिटर्न देता है, फिर भी ऑब्जेक्ट
- 22. एचटीएमएल 5 ऑडियो तत्व IE10 में काम नहीं करता है, लेकिन क्रोम में काम करता है। क्यूं कर?
- 23. यह वर्ग "अगली" लागू किए बिना "__iter__" विधि को कैसे कार्यान्वित करता है?
- 24. लिनक्स आरपीएम इंस्टॉल करता है लेकिन मिटा नहीं सकता है। क्यूं कर?
- 25. नकली KeyEvent * बिल्कुल * असली "बटन की तरह काम नहीं करता है। क्यूं कर?
- 26. AJAX सफलता फ़ंक्शन सादा पाठ के बजाय [ऑब्जेक्ट ऑब्जेक्ट] प्रिंट कर रहा है। क्यूं कर?
- 27. "एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनल द्वारा मूल नल की अनुमति नहीं है"। क्यूं कर?
- 28. ओकैमल लेक्स: बिल्कुल भी काम नहीं करता है, जो भी
- 29. जावा केर्बेरो प्रमाणीकरण काम करता प्रतीत होता है, फिर भी
- 30. "बहिष्करण_मैट्स" कुछ भी नहीं करता है?
यह एक डुप्लिकेट है: http://stackoverflow.com/questions/5113133/why-do-python-strings-not-have-iter- कार्यक्षमता – pts