कभी-कभी आप से निपटने के लिए या present a byte string जैसे
bob2='bob\xf0\xa4\xad\xa2'
आप (उबंटू में) बाहर इस प्रिंट यदि आप
In [62]: print(bob2)
bob
जो समझने की कोशिश कर दूसरों के लिए बहुत उपयोगी नहीं है पाने के अपने बाइट स्ट्रिंग। टिप्पणियों में, जॉन बताते हैं कि विंडोज़ में, print(bob2)
कुछ bobð¤¢
जैसे परिणाम में हैं। समस्या यह है कि पायथन आपके टर्मिनल/कंसोल के डिफ़ॉल्ट एन्कोडिंग का पता लगाता है और उस एन्कोडिंग के अनुसार बाइट स्ट्रिंग को डीकोड करने का प्रयास करता है। चूंकि उबंटू और विंडोज क्रमशः विभिन्न डिफ़ॉल्ट एन्कोडिंग (संभावित रूप से utf-8
और cp1252
) का उपयोग करते हैं, अलग-अलग परिणाम सामने आते हैं।
इसके विपरीत, एक स्ट्रिंग के रेपर स्पष्ट है:
In [63]: print(repr(bob2))
'bob\xf0\xa4\xad\xa2'
लोगों को इतनी अजगर तार के बारे में पर यहां सवाल पोस्ट करते हैं, वे अक्सर तार का रेपर दिखाने के लिए तो हम निश्चित रूप से पता कहा जाता है क्या स्ट्रिंग वे साथ काम कर रहे हैं।
सामान्य रूप से, प्रतिनिधि को वस्तु का एक स्पष्ट स्ट्रिंग प्रतिनिधित्व होना चाहिए। repr(obj)
ऑब्जेक्ट obj
की __repr__
विधि को कॉल करता है। चूंकि आपके उदाहरण में वर्ग A
में कक्षा और मेमोरी एड्रेस को इंगित करने के लिए __repr__
विधि, repr(b)
रिसॉर्ट्स नहीं हैं।
आप अधिक प्रासंगिक जानकारी देने के लिए __repr__
विधि को ओवरराइड कर सकते हैं।
अपने उदाहरण में, '<__main__.A instance at 0x74d78>'
हमें दो उपयोगी बातें बताता है:
- कि
b
वर्ग का एक उदाहरण __main__
नाम स्थान में A
है,
- और वस्तु स्मृति में रहता है कि पता 0x74d78 पर।
उदाहरण के लिए, आपके पास A
कक्षा के दो उदाहरण हैं। यदि उनके पास एक ही स्मृति पता है तो आप जानते होंगे कि वे एक ही अंतर्निहित वस्तु को "इंगित कर रहे हैं"। (ध्यान दें कि यह जानकारी id
का उपयोग करके भी प्राप्त की जा सकती है)।
(0) कृपया अनुमानित/ज्ञात एन्कोडिंग (1) का उल्लेख किए बिना बाइट स्ट्रिंग्स के बारे में बात न करें (वास्तव में) कारण में वजन जोड़ना repr() का उपयोग करने के लिए, जब वे उस स्ट्रिंग को प्रिंट करते हैं तो सभी को उस सीजेके चरित्र को प्रदर्शित नहीं किया जाता है; विंडोज़ पर आईडीएलई में, एक को 'बॉब' प्राप्त होता है ... इसमें 'बॉब' के बाद 4 अक्षर होना चाहिए और मुझे आईडीई में 4 दिखाई दे रहा है लेकिन इस एसओ टिप्पणी में मैं केवल 3 देखता हूं; संभवतः \ xAD को मुलायम हाइफ़न के रूप में माना जाता है। (2) यूनिकोड तारों के लिए उपयोगी, न केवल बाइट तार। उदाहरण: 'u'bob \ U00024b62'' –