Polymorfisme i Python (med eksempler)

I denne vejledning lærer vi om polymorfisme, forskellige typer polymorfisme, og hvordan vi kan implementere dem i Python ved hjælp af eksempler.

Hvad er polymorfisme?

Den bogstavelige betydning af polymorfisme er betingelsen for forekomst i forskellige former.

Polymorfisme er et meget vigtigt koncept i programmering. Det refererer til brugen af ​​en enkelt type enhed (metode, operatør eller objekt) til at repræsentere forskellige typer i forskellige scenarier.

Lad os tage et eksempel:

Eksempel 1: Polymorfisme derudover operator

Vi ved, at +operatøren bruges i vid udstrækning i Python-programmer. Men det har ikke en enkelt brug.

For heltal datatyper +bruges operator til at udføre aritmetisk additionsoperation.

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

Derfor udsendes ovenstående programudgange 3.

Tilsvarende anvendes til strengdatatyper +operatør til at udføre sammenkædning.

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

Som et resultat udsender ovenstående program Python-programmering.

Her kan vi se, at en enkelt operatør +er blevet brugt til at udføre forskellige operationer for forskellige datatyper. Dette er en af ​​de mest enkle forekomster af polymorfisme i Python.

Funktion Polymorfisme i Python

Der er nogle funktioner i Python, som er kompatible til at køre med flere datatyper.

En sådan funktion er len()funktionen. Det kan køre med mange datatyper i Python. Lad os se på nogle eksempler på brugstilfælde af funktionen.

Eksempel 2: Polymorf len () -funktion

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

Produktion

 9 3 2 

Her kan vi se, at mange datatyper som streng, liste, tuple, sæt og ordbog kan arbejde med len()funktionen. Vi kan dog se, at det returnerer specifikke oplysninger om specifikke datatyper.

Polymorfisme i len () funktion i Python

Klasse polymorfisme i Python

Polymorfisme er et meget vigtigt begreb inden for objektorienteret programmering.

For at lære mere om OOP i Python, besøg: Python Object-Oriented Programming

Vi kan bruge begrebet polymorfisme, mens vi opretter klassemetoder, da Python tillader forskellige klasser at have metoder med samme navn.

Vi kan derefter senere generalisere at kalde disse metoder ved at se bort fra det objekt, vi arbejder med. Lad os se på et eksempel:

Eksempel 3: Polymorfisme i klassemetoder

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

Produktion

Mia, jeg er en kat. Mit navn er Kitty. Jeg er 2,5 år gammel. Meow Bark Jeg er en hund. Mit navn er Fluffy. Jeg er 4 år gammel. Bark

Her har vi oprettet to klasser Catog Dog. De deler en lignende struktur og har de samme metodenavne info()og make_sound().

Bemærk dog, at vi ikke har oprettet en fælles superklasse eller knyttet linkene sammen på nogen måde. Selv da kan vi pakke disse to forskellige objekter i en tuple og gentage den ved hjælp af en fælles dyrevariabel. Det er muligt på grund af polymorfisme.

Polymorfisme og arv

Som i andre programmeringssprog arver også barneklasser i Python metoder og attributter fra overordnede klassen. Vi kan omdefinere bestemte metoder og attributter specifikt, så de passer til barneklassen, der er kendt som Method Overriding .

Polymorfisme giver os adgang til disse tilsidesatte metoder og attributter, der har samme navn som overordnet klasse.

Lad os se på et eksempel:

Eksempel 4: Overstyring af metode

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

Produktion

Cirkel I er en todimensional form. Kvadrater har hver vinkel lig med 90 grader. 153.93804002589985

Her kan vi se, at de metoder __str__(), som ikke er blevet tilsidesat i barneklasser, bruges fra den overordnede klasse.

På grund af polymorfisme genkender Python-tolken automatisk, at fact()metoden til objekt a(Square-klasse) er tilsidesat. Så det bruger den, der er defineret i barneklassen.

På den anden side, da fact()metoden til objekt b ikke tilsidesættes, bruges den fra forældreformklassen.

Polymorfisme i forældre- og barneklasser i Python

Bemærk : Metodeoverbelastning , en måde at oprette flere metoder med samme navn men forskellige argumenter, er ikke mulig i Python.

Interessante artikler...