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.

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 Cat
en 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.

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