पायथन में उदाहरण (उदाहरण के साथ)

इस ट्यूटोरियल में, हम बहुरूपता, विभिन्न प्रकार के बहुरूपता के बारे में जानेंगे और उदाहरणों की मदद से हम इन्हें पायथन में कैसे लागू कर सकते हैं।

बहुरूपता क्या है?

बहुरूपता का शाब्दिक अर्थ विभिन्न रूपों में होने वाली स्थिति है।

प्रोग्रामिंग में बहुरूपता एक बहुत महत्वपूर्ण अवधारणा है। यह विभिन्न प्रकारों में विभिन्न प्रकारों का प्रतिनिधित्व करने के लिए एकल प्रकार की इकाई (विधि, ऑपरेटर या वस्तु) के उपयोग को संदर्भित करता है।

आइए एक उदाहरण लेते हैं:

उदाहरण 1: इसके अलावा ऑपरेटर में बहुरूपता

हम जानते हैं कि +पायथन कार्यक्रमों में बड़े पैमाने पर ऑपरेटर का उपयोग किया जाता है। लेकिन, इसका एक भी उपयोग नहीं है।

पूर्णांक डेटा प्रकारों के लिए, +ऑपरेटर का उपयोग अंकगणितीय जोड़ संचालन करने के लिए किया जाता है।

 num1 = 1 num2 = 2 print(num1+num2) 

इसलिए, उपरोक्त कार्यक्रम 3 आउटपुट।

इसी तरह, स्ट्रिंग डेटा प्रकारों के लिए, +ऑपरेटर का उपयोग संघनन करने के लिए किया जाता है।

 str1 = "Python" str2 = "Programming" print(str1+" "+str2) 

नतीजतन, उपरोक्त कार्यक्रम पायथन प्रोग्रामिंग को आउटपुट करता है।

यहां, हम देख सकते हैं कि +अलग-अलग डेटा प्रकारों के लिए अलग-अलग ऑपरेशन करने के लिए एक ही ऑपरेटर का उपयोग किया गया है। यह पायथन में बहुरूपता की सबसे सरल घटनाओं में से एक है।

पायथन में बहुरूपता

पायथन में कुछ कार्य हैं जो कई डेटा प्रकारों के साथ चलने के लिए अनुकूल हैं।

ऐसा ही एक फंक्शन है len()फंक्शन। यह पायथन में कई डेटा प्रकारों के साथ चल सकता है। आइए फ़ंक्शन के मामलों के कुछ उदाहरणों को देखें।

उदाहरण 2: पॉलीमॉर्फिक लेन () फ़ंक्शन

 print(len("Programiz")) print(len(("Python", "Java", "C"))) print(len(("Name": "John", "Address": "Nepal"))) 

आउटपुट

 ९ ३ २ 

यहां, हम देख सकते हैं कि कई डेटा प्रकार जैसे कि स्ट्रिंग, सूची, टपल, सेट, और शब्दकोश len()फ़ंक्शन के साथ काम कर सकते हैं । हालाँकि, हम देख सकते हैं कि यह विशिष्ट डेटा प्रकारों के बारे में विशिष्ट जानकारी देता है।

पाइथन में लेन () फ़ंक्शन में बहुरूपता

पायथन में कक्षा बहुरूपता

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में बहुरूपता एक बहुत महत्वपूर्ण अवधारणा है।

पायथन में ओओपी के बारे में अधिक जानने के लिए, जाएँ: पायथन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

हम वर्ग विधियों का निर्माण करते समय बहुरूपता की अवधारणा का उपयोग कर सकते हैं क्योंकि पायथन विभिन्न वर्गों को एक ही नाम के साथ तरीकों की अनुमति देता है।

फिर हम बाद में उस विधि को कॉल करके सामान्य कर सकते हैं जिस वस्तु के साथ हम काम कर रहे हैं। आइए एक उदाहरण देखें:

उदाहरण 3: वर्ग विधियों में बहुरूपता

 class Cat: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a cat. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a dog. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound() 

आउटपुट

मेव मैं एक बिल्ली हूं। मेरा नाम किट्टी है। मेरी उम्र 2.5 साल है। मेव बार्क मैं एक कुत्ता हूं। मेरा नाम शराबी है। मेरी उम्र 4 साल है। छाल

यहाँ, हमने दो वर्ग बनाए हैं Catऔर Dog। वे एक समान संरचना साझा करते हैं और समान विधि नाम info()और हैं make_sound()

हालांकि, ध्यान दें कि हमने एक सामान्य सुपरक्लास नहीं बनाया है या किसी भी तरह से कक्षाओं को एक साथ जोड़ा है। फिर भी, हम इन दो अलग-अलग वस्तुओं को एक टपल में पैक कर सकते हैं और एक सामान्य पशु चर का उपयोग करके इसके माध्यम से पुनरावृति कर सकते हैं। यह बहुरूपता के कारण संभव है।

बहुरूपता और वंशानुक्रम

अन्य प्रोग्रामिंग भाषाओं की तरह, पायथन में बच्चे की कक्षाएं भी मूल वर्ग से विधियों और विशेषताओं को प्राप्त करती हैं। हम विशेष रूप से चाइल्ड क्लास को फिट करने के लिए कुछ तरीकों और विशेषताओं को फिर से परिभाषित कर सकते हैं, जिसे मेथड ओवरराइडिंग के रूप में जाना जाता है ।

बहुरूपता हमें इन अधिरोहित तरीकों और विशेषताओं तक पहुंचने की अनुमति देता है जिनका मूल वर्ग के समान नाम है।

आइए एक उदाहरण देखें:

उदाहरण 4: विधि अधिभावी

 from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "I am a two-dimensional shape." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "Squares have each angle equal to 90 degrees." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact()) print(b.area()) 

आउटपुट

मंडल I एक द्वि-आयामी आकृति है। वर्गों में प्रत्येक कोण 90 डिग्री के बराबर होता है। 153.93804002589985

यहाँ, हम देख सकते हैं कि इस तरह के तरीके __str__(), जो कि बच्चे की कक्षाओं में ओवरराइड नहीं किए गए हैं, का उपयोग मूल कक्षा से किया जाता है।

बहुरूपता के कारण, पायथन दुभाषिया स्वचालित रूप से पहचानता है कि fact()ऑब्जेक्ट a(स्क्वायर वर्ग) के लिए विधि ओवरराइड है। तो, यह चाइल्ड क्लास में परिभाषित एक का उपयोग करता है।

दूसरी ओर, चूंकि fact()ऑब्जेक्ट b के लिए विधि ओवरराइड नहीं है, इसलिए इसका उपयोग पेरेंट शेप क्लास से किया जाता है।

पाइथन में माता-पिता और बच्चे की कक्षाओं में बहुरूपता

नोट : मेथड ओवरलोडिंग , एक ही नाम के साथ कई तरीके बनाने का तरीका, लेकिन अलग-अलग तर्क, पायथन में संभव नहीं है।

दिलचस्प लेख...