Polimorfisms Python (ar piemēriem)

Šajā apmācībā mēs uzzināsim par polimorfismu, dažādiem polimorfisma veidiem un to, kā mēs ar piemēru palīdzību tos varam īstenot Python.

Kas ir polimorfisms?

Burtiskā polimorfisma nozīme ir rašanās stāvoklis dažādās formās.

Polimorfisms ir ļoti svarīgs jēdziens programmēšanā. Tas attiecas uz viena tipa entītijas (metodes, operatora vai objekta) izmantošanu dažādu tipu pārstāvēšanai dažādos scenārijos.

Ņemsim piemēru:

1. piemērs: polimorfisms papildus operatoram

Mēs zinām, ka +operators tiek plaši izmantots Python programmās. Bet tam nav viena lietošanas veida.

Veselu skaitļu datu tipiem +operators tiek izmantots aritmētiskās pievienošanas darbības veikšanai.

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

Tādējādi iepriekš minētie programmas rezultāti 3.

Līdzīgi virkņu datu tipiem +savienotāju veikšanai tiek izmantots operators.

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

Rezultātā iepriekš minētā programma izvada Python Programming.

Šeit mēs varam redzēt, ka +atšķirīgu datu tipu dažādu darbību veikšanai ir izmantots viens operators . Šis ir viens no vienkāršākajiem polimorfisma gadījumiem Python.

Funkcijas polimorfisms Python

Python ir dažas funkcijas, kuras ir saderīgas, lai palaistu ar vairākiem datu tipiem.

Viena no šādām funkcijām ir len()funkcija. Tas var darboties ar daudziem datu tipiem Python. Apskatīsim dažus funkcijas izmantošanas gadījumu piemērus.

2. piemērs: Polimorfā len () funkcija

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

Rezultāts

 9 3 2 

Šeit mēs varam redzēt, ka daudzi datu tipi, piemēram, virkne, saraksts, kopa, kopa un vārdnīca, var darboties ar šo len()funkciju. Tomēr mēs varam redzēt, ka tas atgriež konkrētu informāciju par konkrētiem datu tipiem.

Polimorfisms len () funkcijā Python

Klases polimorfisms Pitonā

Polimorfisms ir ļoti svarīgs jēdziens objektorientētajā programmēšanā.

Lai uzzinātu vairāk par OOP Python, apmeklējiet: Python objektorientētā programmēšana

Veidojot klases metodes, mēs varam izmantot polimorfisma jēdzienu, jo Python ļauj dažādām klasēm izmantot metodes ar tādu pašu nosaukumu.

Pēc tam mēs varam vēlāk vispārināt šo metožu izsaukšanu, neņemot vērā objektu, ar kuru mēs strādājam. Apskatīsim piemēru:

3. piemērs: polimorfisms klases metodēs

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

Rezultāts

Ņau es esmu kaķis. Mani sauc Kitija. Man ir 2,5 gadi. Mjau miza esmu suns. Mani sauc Pūkains. Man ir 4 gadi. Miza

Šeit mēs esam izveidojuši divas klases Catun Dog. Viņiem ir līdzīga struktūra, un tiem ir vienādi metožu nosaukumi info()un make_sound().

Tomēr ievērojiet, ka mēs neesam izveidojuši kopēju superklasi vai nekādā veidā sasaistījuši klases. Pat tad mēs varam šos divus dažādus objektus iesaiņot vienā komplektā un atkārtot caur to, izmantojot kopēju dzīvnieku mainīgo. Tas ir iespējams polimorfisma dēļ.

Polimorfisms un mantojums

Tāpat kā citās programmēšanas valodās, arī Python bērnu klases manto metodes un atribūtus no vecāku klases. Mēs varam no jauna definēt noteiktas metodes un atribūtus, lai tie atbilstu bērnu klasei, kas ir pazīstams kā metodes ignorēšana .

Polimorfisms ļauj mums piekļūt šīm ignorētajām metodēm un atribūtiem, kuriem ir tāds pats nosaukums kā vecāku klasei.

Apskatīsim piemēru:

4. piemērs: metodes ignorēšana

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

Rezultāts

Aplis esmu divdimensiju forma. Kvadrātu leņķis ir vienāds ar 90 grādiem. 153.93804002589985

Šeit mēs varam redzēt, ka tādas metodes kā __str__(), kuras bērnu klasēs nav ignorētas, tiek izmantotas no vecāku klases.

Polimorfisma dēļ Python tulks automātiski atzīst, ka objekta fact()metode a(kvadrāta klase) tiek ignorēta. Tātad, tas izmanto bērnu klasē definēto.

No otras puses, tā kā fact()objekta b metode netiek ignorēta, to izmanto klasē Vecāku forma.

Polimorfisms vecāku un bērnu klasēs Python

Piezīme : Metode Pārslodze , veids, kā izveidot vairākas metodes ar tādu pašu nosaukumu, bet dažādiem argumentiem, Python nav iespējams.

Interesanti raksti...