Polymorfisme in Python met VOORBEELDEN

Wat is polymorfisme?

Polymorfisme kan worden gedefinieerd als een aandoening die in veel verschillende vormen voorkomt. Het is een concept in Python-programmering waarbij een in Python gedefinieerd object op verschillende manieren kan worden gebruikt. Hiermee kan de programmeur meerdere methoden definiëren in een afgeleide klasse, en deze heeft dezelfde naam als aanwezig in de bovenliggende klasse. Dergelijke scenario's ondersteunen overbelasting van methoden in Python.

Polymorfisme in operators

Een operator in Python helpt bij het uitvoeren van wiskundige en verschillende andere programmeertaken. De operator '+' helpt bijvoorbeeld bij het uitvoeren van optellingen tussen twee typen gehele getallen in Python, en op dezelfde manier helpt dezelfde operator bij het aaneenschakelen van tekenreeksen in het programmeren in Python.

Laten we een voorbeeld nemen van + (plus) operator in Python om een ​​toepassing van polymorfisme in Python weer te geven, zoals hieronder weergegeven:

Python-code:

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))

Output:

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'>

Bovenstaand voorbeeld kan ook worden beschouwd als het voorbeeld van overbelasting van de operator.

Polymorfisme in door de gebruiker gedefinieerde methoden

Een door de gebruiker gedefinieerde methode in de programmeertaal Python zijn methoden die de gebruiker maakt en wordt gedeclareerd met behulp van het trefwoord def met de functienaam.

Polymorfisme in de programmeertaal Python wordt bereikt door overbelasting en overschrijving van methoden. Python definieert methoden met het trefwoord def en met dezelfde naam in zowel de onderliggende als de bovenliggende klasse.

Laten we het volgende nemenwing voorbeeld zoals hieronder weergegeven: –

Python-code:

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())

Output:

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

In de bovenstaande code zijn er twee door de gebruiker gedefinieerde methoden, omtrek en oppervlakte, gedefinieerd in cirkel- en vierkante klassen.

Zoals hierboven weergegeven, roepen zowel de cirkelklasse als de vierkante klasse dezelfde methodenaam aan, die het kenmerk van polymorfisme weergeeft om de vereiste uitvoer te leveren.

Polymorfisme in functies

De ingebouwde functies in Python zijn ontworpen en compatibel gemaakt om verschillende gegevenstypen uit te voeren. In Python, Len() is een van de belangrijkste ingebouwde functies.

Het werkt op verschillende gegevenstypen: lijst, tuple, string en woordenboek. De functie Len () retourneert definitieve informatie die is afgestemd op deze vele gegevenstypen.

De following figuur laat zien hoe polymorfisme kan worden toegepast in Python met betrekking tot ingebouwde functies:

Polymorfisme in functies

Following programma helpt bij het illustreren van de toepassing van polymorfisme in Python: -

Python-code:

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"}))

Output:

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

Polymorfisme in functies

In het bovenstaande voorbeeld voert de functie Len () van Python polymorfisme uit voor respectievelijk tekenreeks-, lijst- en woordenboekgegevenstypen.

Polymorfisme en erfelijkheid

Overerving in Python kan worden gedefinieerd als het programmeerconcept waarbij een gedefinieerde onderliggende klasse eigenschappen overerft van een andere basisklasse die aanwezig is in Python.

Er zijn twee belangrijke Python-concepten: methode-overriding en methode-overbelasting.

  • Bij overbelasting van methoden biedt Python de mogelijkheid methoden te creëren die dezelfde naam hebben om verschillende functionaliteiten in een bepaald stuk code uit te voeren of uit te voeren. Het maakt het mogelijk om methoden te overbelasten en gebruikt ze om verschillende taken in eenvoudiger bewoordingen uit te voeren.
  • Bij het overschrijven van methoden overschrijft Python de waarde die shares een vergelijkbare naam in ouder- en kindklassen.

Laten we het volgende nemenwing voorbeeld van polymorfisme en overerving zoals hieronder weergegeven: -

Python-code:

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())

Output:

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

In bovenstaande code hebben de methoden dezelfde naam, gedefinieerd als de init-methode en de area1-methode. Het object van de klassen vierkant en rechthoek wordt vervolgens gebruikt om de twee methoden aan te roepen om verschillende taken uit te voeren en de uitvoer van de oppervlakte van vierkant en rechthoek te leveren.

Polymorfisme met de klassenmethoden

Dankzij de Python-programmering kunnen programmeurs polymorfisme en methode-overbelasting bereiken met klassenmethoden. De verschillende klassen in Python kunnen methoden hebben die in de hele Python-code met dezelfde naam worden gedeclareerd.

In Python kunnen twee verschillende klassen worden gedefinieerd. De ene zou een kindklasse zijn en deze ontleent attributen aan een andere gedefinieerde klasse die de ouderklasse wordt genoemd.

De following voorbeeld illustreert het concept van polymorfisme met klassenmethoden: –

Python-code:

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()

Output:

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.

In de bovenstaande code worden twee verschillende klassen genoemd als flipkart en amazon gebruik dezelfde methodenamen info en init om respectieve prijsoffertes van het product te geven en het concept van polymorfisme in Python verder te illustreren.

Verschil tussen overbelasting van methoden en polymorfisme tijdens het compileren

Bij compile-time polymorfisme lost de compiler van het Python-programma de oproep op. Compile-time polymorfisme wordt bereikt door overbelasting van methoden.

De Python-compiler lost de oproepen voor polymorfisme tijdens runtime niet op. Het wordt ook geclassificeerd als methode-overriding waarbij dezelfde methoden vergelijkbare handtekeningen of eigenschappen hebben, maar deel uitmaken van verschillende klassen.

Samengevat

  • Polymorfisme kan worden gedefinieerd als een aandoening die in veel verschillende vormen voorkomt.
  • Een operator in Python helpt bij het uitvoeren van wiskundige en verschillende andere programmeertaken.
  • Een door de gebruiker gedefinieerde methode in de programmeertaal Python zijn methoden die de gebruiker maakt en wordt gedeclareerd met behulp van het trefwoord def met de functienaam.
  • Polymorfisme in Python biedt verschillende wenselijke eigenschappen, zoals dit promotest de herbruikbaarheid van codes geschreven voor verschillende klassen en methoden.
  • Een onderliggende klasse is een afgeleide klasse en krijgt zijn attributen van de bovenliggende klasse.
  • Het polymorfisme wordt ook bereikt door het overschrijven van de runtime-methode en het overbelasten van de compile-time-methode.
  • Polymorfisme in Python wordt ook bereikt door overbelasting van operators en klassenmethoden.