Polymorfism i Python med EXEMPEL

Vad รคr polymorfism?

Polymorfism kan definieras som ett tillstรฅnd som fรถrekommer i mรฅnga olika former. Det รคr ett koncept i Python programmering dรคr ett objekt definierat i Python kan anvรคndas pรฅ olika sรคtt. Det tillรฅter programmeraren att definiera flera metoder i en hรคrledd klass, och den har samma namn som finns i den รถverordnade klassen. Sรฅdana scenarier stรถder metodรถverbelastning Python.

Polymorfism i Operatorer

En operatรถr i Python hjรคlper till att utfรถra matematiska och flera andra programmeringsuppgifter. Till exempel, "+"-operatorn hjรคlper till att utfรถra addition mellan tvรฅ heltalstyper i Python, och pรฅ samma sรคtt hjรคlper samma operatรถr till med att sammanfoga strรคngar Python programmering.

Lรฅt oss ta ett exempel pรฅ + (plus) Operatรถr i Python fรถr att visa en tillรคmpning av polymorfism i Python enligt nedanstรฅende:

Python Koda:

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

Produktion:

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

Ovanstรฅende exempel kan ocksรฅ betraktas som exemplet pรฅ operatรถrens รถverbelastning.

Polymorfism i anvรคndardefinierade metoder

En anvรคndardefinierad metod i Python programmeringssprรฅk รคr metoder som anvรคndaren skapar, och det deklareras med hjรคlp av nyckelordet def med funktionsnamnet.

Polymorfism i Python programmeringssprรฅk uppnรฅs genom metodรถverbelastning och รฅsidosรคttande. Python definierar metoder med nyckelord def och med samma namn i bรฅde barn- och fรถrรคlderklass.

Lรฅt oss ta fรถljande exempel som visas nedan: โ€“

Python Koda:

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

Produktion:

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

I ovanstรฅende kod finns det tvรฅ anvรคndardefinierade metoder, perimeter och area, definierade i cirkel- och kvadratklasser.

Som visas ovan anropar bรฅde cirkelklass och kvadratklass samma metodnamn som visar egenskaperna hos polymorfism fรถr att leverera den รถnskade utdata.

Polymorfism i funktioner

Den inbyggda fungerar i Python รคr designade och kompatibla fรถr att kรถra flera datatyper. I Python, Len() รคr en av de viktigaste inbyggda funktionerna.

Det fungerar pรฅ flera datatyper: lista, tupel, strรคng och ordbok. Funktionen Len () returnerar bestรคmd information anpassad till dessa mรฅnga datatyper.

Fรถljande figur visar hur polymorfism kan tillรคmpas i Python med relation till inbyggda funktioner: โ€“

Polymorfism i funktioner

Fรถljande program hjรคlper till att illustrera tillรคmpningen av polymorfism i Python: -

Python Koda:

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

Produktion:

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

Polymorfism i funktioner

I exemplet ovan, Len () funktion av Python utfรถr polymorfism fรถr strรคng-, list- och ordboksdatatyper.

Polymorfism och arv

Arv i Python kan definieras som programmeringskonceptet dรคr en definierad barnklass รคrver egenskaper frรฅn en annan basklass som finns i Python.

Det finns tvรฅ nyckel Python begrepp som kallas metodรถverskridande och metodรถverbelastning.

  • Vid metodรถverbelastning, Python ger funktionen att skapa metoder som har samma namn fรถr att utfรถra eller exekvera olika funktioner i en given kod. Det gรถr det mรถjligt att รถverbelasta metoder och anvรคnder dem fรถr att utfรถra olika uppgifter i enklare termer.
  • I metod รฅsidosรคttande, Python รฅsidosรคtter vรคrdet som delar ett liknande namn i fรถrรคldra- och barnklasser.

Lรฅt oss ta fรถljande exempel pรฅ polymorfism och arv som visas nedan: -

Python Koda:

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

Produktion:

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

I ovanstรฅende kod har metoderna samma namn definierade som init-metod och area1-metod. Objektet fรถr klassen kvadrat och rektangel anvรคnds sedan fรถr att anropa de tvรฅ metoderna fรถr att utfรถra olika uppgifter och tillhandahรฅlla utdata fรถr arean av kvadrat och rektangel.

Polymorfism med klassmetoderna

Ocuco-landskapet Python programmering gรถr det mรถjligt fรถr programmerare att uppnรฅ polymorfism och metodรถverbelastning med klassmetoder. De olika klasserna i Python kan ha metoder som deklareras i samma namn รถver hela Python koda.

In Python, tvรฅ olika klasser kan definieras. En skulle vara barnklass, och den hรคrleder attribut frรฅn en annan definierad klass som kallas fรถrรคlderklass.

Fรถljande exempel illustrerar begreppet polymorfism med klassmetoder: -

Python Koda:

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

Produktion:

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.

I ovanstรฅende kod anvรคnder tvรฅ olika klasser som heter flipkart och amazon samma metodnamn info och init fรถr att tillhandahรฅlla respektive prisuppgift fรถr produkten och ytterligare illustrera konceptet polymorfism i Python.

Skillnad mellan metodรถverbelastning och kompileringstidspolymorfism

I kompileringstiden Polymorphism, kompilatorn av Python programmet lรถser samtalet. Kompileringstidspolymorfism รฅstadkoms genom metodรถverbelastning.

Ocuco-landskapet Python kompilatorn lรถser inte anropen under kรถrningstid fรถr polymorfism. Det klassificeras ocksรฅ som metodรถverskridande dรคr samma metoder har liknande signaturer eller egenskaper, men de utgรถr en del av olika klasser.

Sammanfattning

  • Polymorfism kan definieras som ett tillstรฅnd som fรถrekommer i mรฅnga olika former.
  • En operatรถr i Python hjรคlper till att utfรถra matematiska och flera andra programmeringsuppgifter.
  • En anvรคndardefinierad metod i Python programmeringssprรฅk รคr metoder som anvรคndaren skapar, och det deklareras med hjรคlp av nyckelordet def med funktionsnamnet.
  • Polymorfism i Python erbjuder flera รถnskvรคrda egenskaper, som att det frรคmjar รฅteranvรคndbarheten av koder skrivna fรถr olika klasser och metoder.
  • En barnklass รคr en hรคrledd klass och den fรฅr sina attribut frรฅn fรถrรคldraklassen.
  • Polymorfismen uppnรฅs ocksรฅ genom รถverbelastning av kรถrtidsmetoden och รถverbelastning av kompileringsmetoden.
  • Polymorfism i Python uppnรฅs ocksรฅ genom operatรถrsรถverbelastning och klassmetoder.

Sammanfatta detta inlรคgg med: