बहुरूपता का अर्थ है कई रूप। पायथन में हम एक ही ऑपरेटर या फ़ंक्शन को कई रूप लेते हुए पा सकते हैं। यह विभिन्न वर्गों को बनाने में भी उपयोगी है जिनमें समान नाम वाले वर्ग विधियां होंगी। यह बहुत सारे कोड का पुन:उपयोग करने में मदद करता है और कोड जटिलता को कम करता है। बहुरूपता वंशानुक्रम से भी जुड़ा हुआ है जैसा कि हम नीचे कुछ उदाहरणों में देखेंगे।
ऑपरेटरों में बहुरूपता
+ ऑपरेटर दो इनपुट ले सकता है और इनपुट के आधार पर हमें परिणाम दे सकता है। नीचे दिए गए उदाहरणों में हम देख सकते हैं कि कैसे पूर्णांक इनपुट एक पूर्णांक उत्पन्न करते हैं और यदि इनपुट में से एक फ्लोट है तो परिणाम एक फ्लोट बन जाता है। इसके अलावा तारों के लिए, वे बस संयोजित हो जाते हैं। पायथन में + ऑपरेटर जिस तरह से बनाया गया है, उसके कारण यह स्वचालित रूप से होता है।
उदाहरण
a = 23 b = 11 c = 9.5 s1 = "Hello" s2 = "There!" print(a + b) print(type(a + b)) print(b + c) print(type (b + c)) print(s1 + s2) print(type(s1 + s2))
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
आउटपुट
34 20.5 HelloThere!
अंतर्निहित कार्यों में बहुरूपता
हम यह भी देख सकते हैं कि विभिन्न पायथन फ़ंक्शन विभिन्न प्रकार के इनपुट ले सकते हैं और फिर उन्हें अलग तरीके से संसाधित कर सकते हैं। जब हम लेन () को एक स्ट्रिंग मान प्रदान करते हैं तो यह उसमें प्रत्येक अक्षर को गिनता है। लेकिन अगर हम इनपुट के रूप में पांच टपल या एक शब्दकोश करते हैं, तो यह उन्हें अलग तरह से प्रोसेस करता है।
उदाहरण
str = 'Hi There !' tup = ('Mon','Tue','wed','Thu','Fri') lst = ['Jan','Feb','Mar','Apr'] dict = {'1D':'Line','2D':'Triangle','3D':'Sphere'} print(len(str)) print(len(tup)) print(len(lst)) print(len(dict))
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
आउटपुट
10 5 4 3
उपयोगकर्ता-परिभाषित विधियों में बहुरूपता
हम एक ही नाम के साथ तरीके बना सकते हैं लेकिन विभिन्न वर्ग नामों के तहत लपेटे जा सकते हैं। तो हम अलग-अलग परिणाम प्राप्त करने के लिए पूर्व-निर्धारित विभिन्न वर्ग नामों के साथ एक ही विधि को कॉल करना जारी रख सकते हैं। नीचे दिए गए उदाहरण में हमारे पास दो वर्ग हैं, आयत और वृत्त, जिनका परिमाप और क्षेत्रफल समान विधियों का उपयोग करके प्राप्त किया जा सकता है।
उदाहरण
from math import pi class Rectangle: def __init__(self, length, breadth): self.l = length self.b = breadth def perimeter(self): return 2*(self.l + self.b) def area(self): return self.l * self.b class Circle: def __init__(self, radius): self.r = radius def perimeter(self): return 2 * pi * self.r def area(self): return pi * self.r ** 2 # Initialize the classes rec = Rectangle(5,3) cr = Circle(4) print("Perimter of rectangel: ",rec.perimeter()) print("Area of rectangel: ",rec.area()) print("Perimter of Circle: ",cr.perimeter()) print("Area of Circle: ",cr.area())
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
आउटपुट
Perimter of rectangel: 16 Area of rectangel: 15 Perimter of Circle: 25.132741228718345 Area of Circle: 50.26548245743669