Type Testing in Python – क्योंकि Python एक Dynamically Typed Programming Language है। इसलिए जब हम Python का प्रयोग करते हुए कोई Professional Application Develop कर रहे होते हैं, तब समय-समय पर हमें Different Types के Data के साथ Deal करना होता है। ऐसे में हमें बार-बार ये जानने की जरूरत पड़ती है कि Currently हम किस तरह के Data के साथ Deal कर रहे हैं, ताकि हम उससे सम्बंधित Appropriate Actions Perform कर सकें।
इस जरूरत को पूरा करने के लिए Python हमें type() नाम का एक Built-In Function Provide करता है, जो Parameter के रूप में एक Single Data या Object Accept करता है और Return Value के रूप में हमें उस Data / Object का Current Data Type का type Object Return कर देता है।
यानी type() Function हमें एक type Object Return करता है, जिसमें Parameter के रूप में Pass किए गए Data / Object का Data Type होता है। अन्य शब्दों में कहें तो type Object एक ऐसा Object है जो किसी अन्य Object का Type Hold करता है।
चूंकि Python 3.x में सभी प्रकार के Types को Classes के माध्यम से Represent किया जाता है, इसीलिए जब हम Python 3.x में किसी Data/Object का Type Check करने के लिए type() Function को Use करते हैं, तो हमें प्राप्त होने वाला Output एक Class Name के रूप में ही Return होता है। इसलिए सरल शब्दों में कहें तो Python 3.x में Types ही Classes हैं और Classes ही Types हैं। यानी Class व Type दोनों एक ही Concept के दो नाम हैं।
Python में Supported विभिन्न प्रकार के Types की Hierarchy को निम्न चित्र द्वारा आसानी से Represent किया जा सकता है-
type() Function और इससे Return होने वाले type Object को हम Type Testing करने के लिए कई तरह से Use कर सकते हैं, जिसे निम्नानुसार एक Simple Example Program द्वारा समझना ज्यादा आसान होगा-
[code] FileName: typeFunction.py lst = ['KRISHNA', 'MURARI'] print("Type of the lst:", type(lst)) print("Type of the Language Construct []:", type([])) print("Type of the type: ", type(type), "\n") print("lst and [] are of Same Type?", type(lst) == type([])) print("lst and type 'list' are of Same Type?", type(lst) == list) print("lst and Type 'list' are of Same Type?", isinstance(lst, list)) Output Type of the lst: <class 'list'> Type of the Language Construct []: <class 'list'> Type of the type: <class 'type'> Whether lst and [] are of Same Type? True Whether lst and type 'list' are of Same Type? True Whether lst and 'list' are of Same Type? True [/code]
जैसाकि इस Example से हम समझ सकते हैं कि lst एक List Object है, इसलिए जब पहला Statement Execute होता है, तो type() Function Output के रूप में हमें <class ‘list’> Return करता है, जो इसी बात का Indication है कि lst एक List Class का Object है।
जबकि अगले Statement में हमने Language Construct या Language Literal [] का Type Check किया है और ये Statement भी हमें Exactly वही Output दे रहा है जो पहले Statement के Execution से मिल रहा है क्योंकि Langauge Construct [] स्वयं एक Anonymous List Object ही Return करता है।
इसी तरह से तीसरे Statement में हमने स्वयं type Function से Return होने वाले type Object को ही type() Function में Parameter के रूप में Pass कर दिया है, जिसके परिणामसवरूप Output के रूप में हमें <class ‘type’> प्राप्त होता है, जो ये बताता है कि type Object स्वयं type Class का Object है।
फिर आगे के तीन Statements में हमने तीन तरीकों से Types की Checking किया है, जहां पहला तरीका Equality Comparison Operator Use कर रहा है और ये Compare कर रहा है कि Object lst व Langauge Construct [] दोनों समान Type के हैं या नहीं।
इसी तरह से पांचवा Statement ये Compare कर रहा है कि Object lst का Type “list” है या नहीं जो कि Python की List Class का नाम है।
जबकि अन्तिम Statement में हमने Python के isinstance() Function का प्रयोग करते हुए इस बात को Check किया है कि पहले Parameter के रूप में Pass किया गया Object lst, दूसरे Parameter के रूप में Specified Class Name “list” Type का Object Objects हैं या नहीं।
हालांकि हम type() Function का प्रयोग करते हुए जब चाहें तब अपने Program में Type Testing करते हुए Type Specific Codes लिख सकते हैं, लेकिन यदि हम ऐसा करते हैं, तो हम Python द्वारा Provide की जाने वाली Type Flexibility Feature को पूरी तरह से छोड़ रहे होते हैं क्योंकि Type Testing करके हम जो Code लिखेंगे, वह Code पूरी तरह से केवल उस Specific Type के लिए ही काम करेगा, अन्य Types के लिए नहीं। परिणामस्वरूप अन्य प्रकार के Data के लिए हमें अलग तरह के Codes लिखने पड़ेंगे और हमारा Python Program काफी बड़ा व Complex हो जाएगा।
जब हम Type Testing Use नहीं करते, तब Python एक ही Object में विभिन्न प्रकार के Data को Hold करते हुए Polymorphism के रूप में Single Statement Multiple Forms की सुविधा Provide करके हमें Polymorphism की Ability Provide कर देता है क्योंकि Python एक Dynamically Typed Langauge है इसलिए हम किसी भी Variable में किसी भी प्रकार के Data को Store, Access and Manipulate करने की सुविधा प्राप्त कर लेते हैं। जबकि Type Testing करके हम Python द्वारा Provide की जाने वाली इसी Ability को Ignore कर देते हैं जो कि एक तरह से Python द्वारा Provide की जाने वाली Polymorphism की Ability है।
Python में हम Object Interfaces के रूप में Codes लिखते हैं, Types या Classes के रूप में नहीं। इसलिए Python में हमारा पूरा ध्यान इस बात पर होता है कि कोई Object क्या काम करेगा, न कि इस बात पर कि Object स्वयं क्या है, जैसा कि Class Based C++, Java, C# जैसी Programming Languages में किया जाता है। इसलिए कोई Object किस Type का है इस बात का Python Programming में ज्यादा महत्व नहीं होता बल्कि महत्व इस बात का होता है कि अगर कोई Object किसी Python Interface को Implement करता है, तो वह हर उस काम को कर सकता है, जिसे कोई अन्य ऐसा Object कर सकता है, जिसमें वही समान Interface Implemented है, फिर भले ही दोनों Objects बिल्कुल अलग Class या Type के क्यों न हों।
इसलिए Type Testing को मूलत: केवल Debugging के दौरान ही Use किया जाता है, ताकि जिस Code में Error आ रही हो, उस Code से Return होने वाले या उस Code में Process होने वाले Data को उसका Type Test करके पता लगाया जा सके कि जिस Data पर Operation Perform किया जा रहा है, उस Data पर वह Operation Perform हो सकता है या नहीं।
उदाहरण के लिए List पर कुछ ऐसे Operations Perform किए जा सकते हैं, जो कि Sets या Mapping पर किसी भी स्थिति में नहीं किए जा सकते। ऐसे में कभी-कभी हम किसी Set या Mapping पर List Operations को Perform करने लगते हैं। परिणामस्वरूप हमारा Program Normally Run नहीं हो पाता और Error देता है। इस स्थिति में Type Testing करके हम इस बात का पता लगाते हैं कि हम किस तरह के Data पर Operation Perform कर रहे हैं और वह Operation उस तरह के Data पर Possible भी है या नहीं। (Type Testing in Python in Hindi)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Python in Hindi | Page: 602 | Format: PDF