Polimorfizmus be Python PÉLDÁVAL

⚡ Okos összefoglaló

Polimorfizmus be Python lehetővé teszi egyetlen felület használatát különböző típusú objektumokkal, így ugyanaz a metódus vagy operátor az objektumtól függően eltérően viselkedik. Ez operátor-túlterhelésben, beépített függvényekben, felhasználó által definiált metódusokban és az objektumokon átívelő öröklődésben nyilvánul meg. Python programokat.

  • 🔘 Meghatározás: A polimorfizmus „sokféle formát” jelent, amely lehetővé teszi, hogy egy interfész különböző adattípusokon vagy osztályokon működjön.
  • ☑️ Operator túlterhelés: A + operátor számokat ad össze, de karakterláncokat fűz össze, ami az operátor polimorfizmusát mutatja.
  • Beépített függvények: Az olyan függvények, mint a len() , sztringeken, listákon és szótárakon egyaránt működnek.
  • 🧪 Felhasználó által definiált metódusok: Az osztályok megoszthatják a metódusneveket, például a area() és a perimetria() különböző alakzatokhoz.
  • 🇧🇷 Öröklés: A metódusok felülbírálása lehetővé teszi egy gyermekosztály számára, hogy futási időben újradefiniálja a szülő metódusokat.
  • 🤖 Mesterséges intelligencia relevanciája: A gépi tanulási könyvtárak újra felhasználják a megosztott interfészeket, például a fit() és a forward()-ot a modellek között.

Polimorfizmus be Python

Mi a polimorfizmus?

A polimorfizmust olyan állapotként határozhatjuk meg, amely sokféle formában fordul elő. Ez egy fogalom benne Python programozás, ahol egy objektum van definiálva Python többféleképpen használhatók. Lehetővé teszi a programozó számára, hogy több metódust definiáljon egy származtatott osztályban, és ugyanaz a neve, mint a szülő osztályban. Az ilyen forgatókönyvek támogatják a metódusok túlterhelését Python.

Polimorfizmus be Operatorzok

Be egy operátor Python segít matematikai és számos más programozási feladat elvégzésében. Például a '+' operátor segít két egész számtípus összeadásában Python, és ugyanígy ugyanaz az operátor segít a karakterláncok összefűzésében Python programozás.

Vegyünk egy példát a + (plusz) operátor Python a polimorfizmus alkalmazásának megjelenítéséhez Python az alábbiak szerint:

Python Code:

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

output:

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

A fenti példa a kezelő túlterhelésének példájának is tekinthető.

Polimorfizmus a felhasználó által definiált módszerekben

Egy felhasználó által definiált módszer a Python A programozási nyelv olyan metódus, amelyet a felhasználó hoz létre, és a def kulcsszó használatával deklarálódik a függvény nevével.

Polimorfizmus a Python programozási nyelv módszer túlterheléssel és felülírással érhető el. Python metódusokat határoz meg def kulcsszóval és azonos névvel a gyermek és a szülő osztályban.

Vegyük a következő példát az alábbiak szerint: -

Python Code:

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

output:

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

A fenti kódban két felhasználó által definiált metódus található, a kerület és a terület, kör és négyzet osztályokban definiálva.

Amint fentebb látható, a kör osztály és a négyzet osztály is ugyanazt a metódusnevet hívja meg, megjelenítve a polimorfizmus jellemzőit a szükséges kimenet biztosításához.

Polimorfizmus a függvényekben

A beépített funkciók Python több adattípus végrehajtására tervezték és kompatibilissé teszik. In PythonA len() az egyik legfontosabb beépített függvény.

Több adattípuson is működik: listán, tuple-ön, karakterláncon és szótáron. A len() függvény ezekhez az adattípusokhoz igazított definit információkat ad vissza.

Az alábbi ábra bemutatja, hogyan alkalmazható a polimorfizmus Python a beépített funkciókkal kapcsolatban: –

Polimorfizmus a függvényekben

Az alábbi program segít a polimorfizmus alkalmazásának szemléltetésében Python: -

Python Code:

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

output:

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

Polimorfizmus a függvényekben

A fenti példában a len() függvény a következőt használja: Python polimorfizmust hajt végre karakterlánc-, lista- és szótáradattípusok esetén.

Polimorfizmus és öröklődés

Öröklés be Python úgy definiálható, mint egy programozási koncepció, amelyben egy gyermekosztály definiált örökli a tulajdonságokat egy másik alaposztálytól, amely benne van Python.

Két kulcs van Python módszer felülbírálásnak és módszer túlterhelésnek nevezett fogalmak.

  • A módszer túlterhelésében Python biztosítja az azonos nevű metódusok létrehozásának lehetőségét, amelyek egy adott kódrészletben különböző funkciókat hajtanak végre vagy hajtanak végre. Lehetővé teszi a metódusok túlterhelését, és különböző feladatok egyszerűbb végrehajtására használja őket.
  • A módszer felülbírálásánál Python felülírja azt az értéket, amely hasonló nevet használ szülői és gyermekosztályokban.

Vegyük a következő példát a polimorfizmusra és az öröklődésre, az alábbiak szerint: –

Python Code:

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

output:

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

A fenti kódban a metódusoknak ugyanaz a neve, mint az init metódus és a area1 metódus. A négyzet és a téglalap osztály objektuma ezután a két módszer meghívására szolgál különböző feladatok végrehajtására, és a négyzet és a téglalap területének kimenetének biztosítására.

Polimorfizmus az osztálymódszerekkel

Az Python A programozás lehetővé teszi a programozóknak, hogy osztálymetódusokkal polimorfizmust és metódus-túlterhelést érjenek el. A különböző osztályok Python rendelkezhetnek olyan metódusokkal, amelyek ugyanazon a néven vannak deklarálva a Python kód.

In Python, két különböző osztály definiálható. Az egyik gyermekosztály lenne, és attribútumokat származtat egy másik meghatározott osztályból, amelyet szülő osztálynak neveznek.

A következő példa szemlélteti a polimorfizmus fogalmát osztálymetódusokkal: –

Python Code:

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

output:

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.

A fenti kódban két különböző osztály, a flipkart és az amazon ugyanazt az info és init nevű módszert használja, hogy megfelelő árajánlatot adjon a termékről, és jobban illusztrálja a polimorfizmus fogalmát. Python.

Különbség a módszer túlterhelése és a fordítási idejű polimorfizmus között

A fordítási idejű polimorfizmusban a fordító a Python program megoldja a hívást. A fordítási idejű polimorfizmus a metódusok túlterhelésén keresztül valósul meg.

Az Python A fordító nem oldja meg a hívásokat futási idő alatt polimorfizmus miatt. Metódus felülbírálásnak is minősül, ahol ugyanazok a módszerek hasonló aláírásokat vagy tulajdonságokat hordoznak, de különböző osztályok részét képezik.

GYIK

Kacsa typing lehetővé teszi, Python Egy objektumot a megadott metódusok alapján ítéljünk meg, ne pedig az osztálytípusa alapján. Ha egy objektum rendelkezik a szükséges metódussal, akkor működik, a „ha úgy jár, mint egy kacsa, és úgy hápog, mint egy kacsa, akkor az egy kacsa” elvet követve.

Nem hagyományosan. Amikor két metódusnak ugyanaz a neve, az utolsó definíció nyer. Python ehelyett a túlterhelést szimulálja alapértelmezett argumentumokkal, változó hosszúságú *args paraméterekkel vagy a functools.singledispatch dekorátorral, hogy egyetlen függvényen belül különböző argumentumtípusokat kezeljen.

AbstracAz abc modulból származó alaposztályok olyan metódusokat deklarálnak, amelyeket minden alosztálynak meg kell valósítania. Megosztott interfészt kényszerítenek ki, így a nem kapcsolódó alosztályok polimorf módon használhatók, miközben Python garantálja, hogy mindegyik biztosítja a szükséges módszereket.

A polimorfizmus javítja a kód újrafelhasználhatóságát, rugalmasságát és skálázhatóságát. Egyetlen függvény vagy interfész számos objektumtípust képes feldolgozni, ami csökkenti a duplikációt, leegyszerűsíti a karbantartást, és lehetővé teszi új osztályok hozzáadását anélkül, hogy újra kellene írni a már meglévő kódot.

Igen. Kacsa ty-n keresztülpingAz ugyanazon metódust megvalósító, egymással nem összefüggő osztályok felcserélhetően használhatók közös szülő nélkül. OperaA tor túlterhelés és a beépített függvények, mint például a len() is biztosítanak polimorfizmust öröklődés nélkül.

Polimorfizmus akkor jelenik meg, amikor egy függvény karakterláncokat, listákat vagy egyéni objektumokat dolgoz fel, adatbázis-illesztőprogramokban, amelyek egyetlen API-t tesznek elérhetővé a különböző motorok között, és grafikus felhasználói felületű eszközkészletekben, ahol sok widget oszt meg egy felületen keresztül meghívott draw() vagy update() metódusokat.

A mesterséges intelligencia keretrendszerei a polimorfizmuson alapulnak. Py-banTorch, minden modell alosztálya nn.Module és felülírja a forward() metódust; a scikit-learnben a becslők megosztják a fit() és predict() metódusokat, így a különböző algoritmusok egyetlen konzisztens, felcserélhető felületen futnak.

Igen. A GitHub Copilot és az ügynöki mesterséges intelligencia asszisztensek kacsa típusú függvényeket generálnak, ami azt sugallja, hogy abs.tract alaposztályok, és az ismétlődő metódusok polimorf tervekké alakítása egy rövid promptból. RevTekintse meg a kimenetet a logika és az interfészek helyességének megerősítéséhez.

Foglald össze ezt a bejegyzést a következőképpen: