बहुरूपता Python उदाहरण सहित

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

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

बहुरूपता Operaमरोड़

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

आइये + (प्लस) का उदाहरण लें ऑपरेटर में Python बहुरूपता के अनुप्रयोग को प्रदर्शित करने के लिए Python के रूप में नीचे दिखाया गया है:

Python कोड:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

आउटपुट:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

उपरोक्त उदाहरण को ऑपरेटर ओवरलोडिंग का उदाहरण भी माना जा सकता है।

उपयोगकर्ता-परिभाषित विधियों में बहुरूपता

उपयोगकर्ता द्वारा परिभाषित विधि Python प्रोग्रामिंग भाषा में विधियाँ वे होती हैं जिन्हें उपयोगकर्ता बनाता है, और इसे फ़ंक्शन नाम के साथ def कीवर्ड का उपयोग करके घोषित किया जाता है।

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

आइये नीचे दिया गया उदाहरण लें:-

Python कोड:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
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
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

आउटपुट:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

उपरोक्त कोड में, दो उपयोगकर्ता-परिभाषित विधियाँ हैं, परिधि और क्षेत्रफल, जो वृत्त और वर्ग वर्गों में परिभाषित हैं।

जैसा कि ऊपर दिखाया गया है, सर्कल क्लास और स्क्वायर क्लास दोनों आवश्यक आउटपुट देने के लिए पॉलीमॉर्फिज्म की विशेषता को प्रदर्शित करते हुए समान विधि नाम को लागू करते हैं।

कार्यों में बहुरूपता

इसमें अंतर्निहित कार्य Python कई डेटा प्रकारों को निष्पादित करने के लिए डिज़ाइन और संगत बनाया गया है। Python, Len() प्रमुख अंतर्निहित कार्यों में से एक है.

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

निम्नलिखित चित्र दर्शाता है कि बहुरूपता को किस प्रकार लागू किया जा सकता है Python अंतर्निहित कार्यों के संबंध में: -

कार्यों में बहुरूपता

निम्नलिखित कार्यक्रम बहुरूपता के अनुप्रयोग को चित्रित करने में मदद करता है Python:

Python कोड:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

आउटपुट:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

कार्यों में बहुरूपता

उपरोक्त उदाहरण में, Len () फ़ंक्शन Python क्रमशः स्ट्रिंग, सूची और शब्दकोश डेटा प्रकारों के लिए बहुरूपता निष्पादित करता है।

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

विरासत Python प्रोग्रामिंग अवधारणा के रूप में परिभाषित किया जा सकता है जिसमें परिभाषित एक चाइल्ड क्लास, बेस क्लास में मौजूद दूसरे बेस क्लास से गुण प्राप्त करता है। Python.

दो प्रमुख बातें हैं Python विधि अधिव्यापन और विधि अधिभार नामक अवधारणाएँ।

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

आइए हम बहुरूपता और वंशानुक्रम का निम्नलिखित उदाहरण लें जैसा कि नीचे दिखाया गया है: -

Python कोड:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

आउटपुट:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

उपरोक्त कोड में, विधियों का नाम init विधि और area1 विधि के रूप में परिभाषित समान है। वर्ग वर्ग और आयत के ऑब्जेक्ट का उपयोग तब दो विधियों को अलग-अलग कार्य करने और वर्ग और आयत के क्षेत्र का आउटपुट प्रदान करने के लिए किया जाता है।

वर्ग विधियों के साथ बहुरूपता

RSI Python प्रोग्रामिंग प्रोग्रामर्स को क्लास विधियों के साथ पॉलीमॉर्फिज्म और मेथड ओवरलोडिंग प्राप्त करने में सक्षम बनाती है। Python ऐसे तरीके हो सकते हैं जो एक ही नाम से घोषित किए गए हों Python कोड।

In Python, दो अलग-अलग क्लास परिभाषित किए जा सकते हैं। एक चाइल्ड क्लास होगी, और यह पैरेंट क्लास नामक एक अन्य परिभाषित क्लास से विशेषताएँ प्राप्त करती है।

निम्नलिखित उदाहरण वर्ग विधियों के साथ बहुरूपता की अवधारणा को दर्शाता है: –

Python कोड:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

आउटपुट:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

उपरोक्त कोड में, फ्लिपकार्ट और अमेज़ॅन नामक दो अलग-अलग वर्ग उत्पाद के संबंधित मूल्य उद्धरण प्रदान करने के लिए समान विधि नाम info और init का उपयोग करते हैं और आगे बहुरूपता की अवधारणा को स्पष्ट करते हैं। Python.

विधि ओवरलोडिंग और संकलन-समय बहुरूपता के बीच अंतर

संकलन-समय बहुरूपता में, का संकलक Python प्रोग्राम कॉल को हल करता है। संकलन-समय बहुरूपता विधि ओवरलोडिंग के माध्यम से पूरा किया जाता है।

RSI Python कंपाइलर रन टाइम के दौरान पॉलीमॉर्फिज्म के लिए कॉल को हल नहीं करता है। इसे मेथड ओवरराइडिंग के रूप में भी वर्गीकृत किया जाता है जिसमें समान मेथड समान हस्ताक्षर या गुण रखते हैं, लेकिन वे अलग-अलग क्लास का हिस्सा बनते हैं।

सारांश

  • बहुरूपता को एक ऐसी स्थिति के रूप में परिभाषित किया जा सकता है जो कई अलग-अलग रूपों में होती है।
  • एक ऑपरेटर Python गणितीय और कई अन्य प्रोग्रामिंग कार्यों को करने में मदद करता है।
  • उपयोगकर्ता द्वारा परिभाषित विधि Python प्रोग्रामिंग भाषा में विधियाँ वे होती हैं जिन्हें उपयोगकर्ता बनाता है, और इसे फ़ंक्शन नाम के साथ def कीवर्ड का उपयोग करके घोषित किया जाता है।
  • बहुरूपता Python यह कई वांछनीय गुण प्रदान करता है, जैसे कि यह विभिन्न वर्गों और विधियों के लिए लिखे गए कोड की पुनः प्रयोज्यता को बढ़ावा देता है।
  • चाइल्ड क्लास एक व्युत्पन्न क्लास है, और यह अपनी विशेषताएं पैरेंट क्लास से प्राप्त करता है।
  • बहुरूपता को रन-टाइम विधि ओवरराइडिंग और संकलन-समय विधि ओवरलोडिंग के माध्यम से भी प्राप्त किया जाता है।
  • बहुरूपता Python ऑपरेटर ओवरलोडिंग और क्लास विधियों के माध्यम से भी प्राप्त किया जाता है।