मैं एक फ़ंक्शन बना रहा हूं जो या तो यूनिकोड स्ट्रिंग या बाइट्स (या बाइटियर) ऑब्जेक्ट स्वीकार करेगा। मैं यह सुनिश्चित करना चाहता हूं कि केवल उन प्रकारों को पारित किया जाए। मुझे पता है कि मैं जांच सकता हूं कि isinstance(x, str)
कर कुछ स्ट्रिंग है या नहीं, और मुझे पता है कि मैं isinstance(x, bytes) or isinstance(x, bytearray)
लिख सकता हूं।बाइट्स और बाइटियर के सुपरक्लास?
उत्तरार्द्ध की जांच करने के लिए एक और संक्षिप्त तरीका है, यानी, क्या कोई कक्षा है जिसमें से bytes
और bytearray
व्युत्पन्न है?
>>> bytearray.__base__
<class 'object'>
>>> bytes.__base__
<class 'object'>
प्रकार के लिए जांच न करें:
क्यों अन्य प्रकार है कि आपके समारोह की आवश्यकताओं के साथ-साथ समर्थन को स्वीकार नहीं है ? स्पष्ट रूप से किस प्रकार की जांच करें? –
@Jim: ठीक है, मुझे नहीं पता। मैं किसी भी बाइनरी डेटा के लिए एलजेडब्लूडब्ल्यू संपीड़न (एक अभ्यास के रूप में) लागू करने की कोशिश कर रहा हूं। स्वीकार करने के लिए अन्य प्रकार क्या समझेंगे? – Javier
उदाहरण के लिए NumPy arrays। या सी एक्सटेंशन प्रकार आपके पुस्तकालय के उपयोगकर्ता ने खुद को लिखा है। आप सिर्फ यह नहीं जानते कि यह किस प्रकार के लिए उपयोगी हो सकता है। आपको जो मिलता है उसके साथ काम करने का प्रयास करें - यदि आपका प्रकार आवश्यकताओं को पूरा नहीं करता है तो आपका कोड असफल हो जाएगा। –