Polymorfisme in Python (met voorbeelden)

In deze tutorial zullen we leren over polymorfisme, verschillende soorten polymorfisme, en hoe we deze kunnen implementeren in Python met behulp van voorbeelden.

Wat is polymorfisme?

De letterlijke betekenis van polymorfisme is de toestand van voorkomen in verschillende vormen.

Polymorfisme is een heel belangrijk concept bij programmeren. Het verwijst naar het gebruik van één type entiteit (methode, operator of object) om verschillende typen in verschillende scenario's weer te geven.

Laten we een voorbeeld nemen:

Voorbeeld 1: operator voor polymorfisme in toevoeging

We weten dat de +operator veel wordt gebruikt in Python-programma's. Maar het heeft geen enkel gebruik.

Voor gegevenstypen met gehele getallen wordt de +operator gebruikt om rekenkundige optelbewerkingen uit te voeren.

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

Vandaar dat het bovenstaande programma 3.

Evenzo wordt voor stringgegevenstypen de +operator gebruikt om aaneenschakeling uit te voeren.

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

Het resultaat is dat het bovenstaande programma Python Programming uitvoert.

Hier kunnen we zien dat een enkele operator +is gebruikt om verschillende bewerkingen uit te voeren voor verschillende gegevenstypen. Dit is een van de meest eenvoudige gevallen van polymorfisme in Python.

Functiepolymorfisme in Python

Er zijn enkele functies in Python die compatibel zijn om met meerdere gegevenstypen te worden uitgevoerd.

Een van die functies is de len()functie. Het kan met veel gegevenstypen in Python worden uitgevoerd. Laten we eens kijken naar enkele gebruiksvoorbeelden van de functie.

Voorbeeld 2: Polymorfe len () functie

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

Uitvoer

 9 3 2 

Hier kunnen we zien dat veel gegevenstypen, zoals string, lijst, tuple, set en woordenboek, met de len()functie kunnen werken . We kunnen echter zien dat het specifieke informatie over specifieke gegevenstypen retourneert.

Polymorfisme in len () functie in Python

Klasse polymorfisme in Python

Polymorfisme is een zeer belangrijk concept in objectgeoriënteerd programmeren.

Ga voor meer informatie over OOP in Python naar: Python Object-Oriented Programming

We kunnen het concept van polymorfisme gebruiken bij het maken van klassemethoden, aangezien Python verschillende klassen toestaat om methoden met dezelfde naam te hebben.

We kunnen het aanroepen van deze methoden later generaliseren door het object waarmee we werken te negeren. Laten we naar een voorbeeld kijken:

Voorbeeld 3: Polymorfisme in klassemethoden

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

Uitvoer

Miauw ik ben een kat. Mijn naam is Kitty. Ik ben 2,5 jaar oud. Meow Bark Ik ben een hond. Mijn naam is Fluffy. Ik ben 4 jaar oud. Schors

Hier hebben we twee klassen gemaakt Caten Dog. Ze delen een vergelijkbare structuur en hebben dezelfde methodenamen info()en make_sound().

Merk echter op dat we geen gemeenschappelijke superklasse hebben gemaakt of de klassen op enigerlei wijze aan elkaar hebben gekoppeld. Zelfs dan kunnen we deze twee verschillende objecten in een tupel verpakken en erdoorheen herhalen met behulp van een gemeenschappelijke dierlijke variabele. Het is mogelijk vanwege polymorfisme.

Polymorfisme en overerving

Net als in andere programmeertalen, erven de onderliggende klassen in Python ook methoden en attributen van de bovenliggende klasse. We kunnen bepaalde methoden en attributen opnieuw definiëren om specifiek te passen bij de onderliggende klasse, die bekend staat als Method Overriding .

Polymorfisme geeft ons toegang tot deze overschreven methoden en attributen die dezelfde naam hebben als de bovenliggende klasse.

Laten we naar een voorbeeld kijken:

Voorbeeld 4: Methode overschrijven

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

Uitvoer

Cirkel Ik ben een tweedimensionale vorm. Vierkanten hebben elke hoek gelijk aan 90 graden. 153.93804002589985

Hier kunnen we zien dat de methoden zoals __str__(), die niet zijn overschreven in de onderliggende klassen, worden gebruikt vanuit de bovenliggende klasse.

Vanwege polymorfisme herkent de Python-interpreter automatisch dat de fact()methode voor object a(klasse Square) wordt overschreven. Het gebruikt dus degene die is gedefinieerd in de kindklasse.

Aan de andere kant, aangezien de fact()methode voor object b niet wordt overschreven, wordt deze gebruikt vanuit de klasse Parent Shape.

Polymorfisme in bovenliggende en onderliggende klassen in Python

Opmerking : Overbelasting van methoden, een manier om meerdere methoden te maken met dezelfde naam maar met verschillende argumenten, is niet mogelijk in Python.

Interessante artikelen...