Polimorfismo dentro Python con ESEMPI

โšก Riepilogo intelligente

Polimorfismo dentro Python consente a una singola interfaccia di funzionare con oggetti di tipi diversi, in modo che lo stesso metodo o operatore si comporti in modo diverso a seconda dell'oggetto. Si manifesta attraverso l'overloading degli operatori, le funzioni integrate, i metodi definiti dall'utente e l'ereditarietร . Python programmi.

  • ๐Ÿ”˜ Definizione: Il polimorfismo significa "molte forme", consentendo a una singola interfaccia di operare su diversi tipi di dati o classi.
  • โ˜‘๏ธ Operasovraccarico del toro: L'operatore + somma i numeri ma concatena anche le stringhe, dimostrando il polimorfismo degli operatori.
  • โœ… Funzioni integrate: Funzioni come len() funzionano indistintamente su stringhe, liste e dizionari.
  • ๐Ÿงช Metodi definiti dall'utente: Le classi possono condividere nomi di metodi come area() e perimeter() per forme diverse.
  • ๏ธ Ereditร : L'override dei metodi consente a una classe figlia di ridefinire un metodo della classe padre in fase di esecuzione.
  • ๐Ÿค– Rilevanza dell'IA: Le librerie di machine learning riutilizzano interfacce condivise come fit() e forward() tra i vari modelli.

Polimorfismo dentro Python

Cos'รจ il polimorfismo?

Il polimorfismo puรฒ essere definito come una condizione che si manifesta in molte forme diverse. รˆ un concetto in Python programmazione in cui un oggetto definito in Python puรฒ essere utilizzato in diversi modi. Consente al programmatore di definire piรน metodi in una classe derivata e ha lo stesso nome presente nella classe genitore. Tali scenari supportano l'overload del metodo Python.

Polimorfismo dentro OperaTors

Un operatore dentro Python aiuta a svolgere compiti matematici e di programmazione di altro tipo. Ad esempio, l'operatore '+' aiuta a eseguire l'addizione tra due tipi di interi in Python, e allo stesso modo, lo stesso operatore aiuta a concatenare le stringhe in Python programmazione.

Facciamo un esempio di + (piรน) operatore in Python per visualizzare un'applicazione di Polimorfismo in Python come mostrato di seguito:

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

Produzione:

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

L'esempio sopra puรฒ anche essere considerato come un esempio di sovraccarico dell'operatore.

Polimorfismo nei metodi definiti dall'utente

Un metodo definito dall'utente in Python il linguaggio di programmazione รจ un metodo creato dall'utente e viene dichiarato utilizzando la parola chiave def con il nome della funzione.

Polimorfismo nel Python il linguaggio di programmazione si ottiene attraverso l'overload e l'override del metodo. Python definisce i metodi con la parola chiave def e con lo stesso nome sia nella classe figlia che in quella genitore.

Prendiamo il seguente esempio come mostrato di seguito: โ€“

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

Produzione:

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

Nel codice precedente sono presenti due metodi definiti dall'utente, perimetro e area, definiti nelle classi circle e quadrati.

Come mostrato sopra, sia la classe Circle che la classe Square invocano lo stesso nome di metodo visualizzando la caratteristica del polimorfismo per fornire l'output richiesto.

Polimorfismo nelle funzioni

Le funzioni integrate in Python sono progettati e resi compatibili per eseguire diversi tipi di dati. In Pythonlen() รจ una delle funzioni integrate chiave.

Funziona con diversi tipi di dati: lista, tupla, stringa e dizionario. La funzione len() restituisce informazioni precise allineate a questi diversi tipi di dati.

La figura seguente mostra come il polimorfismo puรฒ essere applicato in Python in relazione alle funzioni integrate: โ€“

Polimorfismo nelle funzioni

Il programma seguente aiuta a illustrare l'applicazione del polimorfismo in 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"}))

Produzione:

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

Polimorfismo nelle funzioni

Nell'esempio precedente, la funzione len() di Python esegue il polimorfismo rispettivamente per i tipi di dati stringa, elenco e dizionario.

Polimorfismo ed ereditarietร 

Ereditร  in Python puรฒ essere definito come il concetto di programmazione in cui una classe figlia definita eredita le proprietร  da un'altra classe base presente in Python.

Ci sono due chiavi Python concetti denominati sovrascrittura del metodo e sovraccarico del metodo.

  • Nel sovraccarico del metodo, Python fornisce la funzionalitร  di creare metodi che hanno lo stesso nome per eseguire o eseguire funzionalitร  diverse in un dato pezzo di codice. Consente di sovraccaricare i metodi e di utilizzarli per eseguire compiti diversi in termini piรน semplici.
  • In Metodo override, Python sovrascrive il valore che condivide un nome simile nelle classi padre e figlio.

Prendiamo il seguente esempio di polimorfismo ed ereditarietร  come mostrato di seguito: โ€“

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

Produzione:

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

Nel codice precedente, i metodi hanno lo stesso nome definito come metodo init e metodo area1. Gli oggetti della classe quadrato e rettangolo vengono quindi utilizzati per invocare i due metodi per eseguire compiti diversi e fornire l'output dell'area del quadrato e del rettangolo.

Polimorfismo con i metodi delle classi

Migliori Python la programmazione consente ai programmatori di ottenere il polimorfismo e l'overload dei metodi con metodi di classe. Le diverse classi in Python possono avere metodi dichiarati con lo stesso nome in tutti i file Python codice.

In Python, si possono definire due classi diverse. Una sarebbe la classe figlia e deriva gli attributi da un'altra classe definita denominata classe genitore.

L'esempio seguente illustra il concetto di polimorfismo con metodi di classe: โ€“

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

Produzione:

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.

Nel codice sopra, due classi diverse denominate flipkart e amazon utilizzano gli stessi nomi di metodo info e init per fornire rispettive quotazioni di prezzo del prodotto e illustrare ulteriormente il concetto di polimorfismo in Python.

Differenza tra l'overload del metodo e il polimorfismo in fase di compilazione

Nel Polymorphism in fase di compilazione, il compilatore di Python il programma risolve la chiamata. Il polimorfismo in fase di compilazione viene ottenuto tramite l'overload del metodo.

Migliori Python il compilatore non risolve le chiamate durante il runtime per il polimorfismo. รˆ anche classificato come overriding del metodo in cui gli stessi metodi portano firme o proprietร  simili, ma fanno parte di classi diverse.

DOMANDE FREQUENTI

Duck typing Cosa Python Un oggetto viene giudicato in base ai metodi che fornisce, piuttosto che in base al suo tipo di classe. Se un oggetto possiede il metodo richiesto, funziona, seguendo il principio "se cammina come un'anatra e starnazza come un'anatra, รจ un'anatra".

Non tradizionalmente. Quando due metodi condividono lo stesso nome, prevale l'ultima definizione. Python simula invece l'overloading utilizzando argomenti predefiniti, *args a lunghezza variabile o il decoratore functools.singledispatch per gestire diversi tipi di argomenti all'interno di una singola funzione.

AbstracLe classi base, dal modulo abc, dichiarano metodi che ogni sottoclasse deve implementare. Essi impongono un'interfaccia condivisa, in modo che le sottoclassi non correlate possano essere utilizzate in modo polimorfico mentre Python garantisce che ciascuno fornisca i metodi richiesti.

Il polimorfismo migliora la riutilizzabilitร , la flessibilitร  e la scalabilitร  del codice. Una singola funzione o interfaccia puรฒ elaborare molti tipi di oggetti, riducendo la duplicazione, semplificando la manutenzione e consentendo di aggiungere nuove classi senza riscrivere il codice che giร  le utilizza.

Sรฌ. Attraverso il paperoping, classi non correlate che implementano lo stesso metodo possono essere utilizzate in modo intercambiabile senza alcun genitore in comune. OperaL'overloading di tor e le funzioni integrate come len() forniscono anche polimorfismo senza ereditarietร .

Il polimorfismo si manifesta quando una funzione elabora stringhe, liste o oggetti personalizzati, nei driver di database che espongono un'unica API tra diversi motori e nei toolkit GUI in cui molti widget condividono metodi draw() o update() richiamati tramite un'unica interfaccia.

I framework di IA dipendono dal polimorfismo. In PyTorch, ogni modello eredita da nn.Module e sovrascrive forward(); in scikit-learn, gli stimatori condividono i metodi fit() e predict(), quindi diversi algoritmi vengono eseguiti attraverso un'unica interfaccia coerente e intercambiabile.

Sรฌ. GitHub Copilot e gli assistenti AI agentici generano funzioni di tipo duck, suggeriscono abtracclassi base e refactoring di metodi ripetuti in progetti polimorfici a partire da un breve prompt. RevEsamina l'output per confermare che la logica e le interfacce siano corrette.

Riassumi questo post con: