Esempio 1: polimorfismo con funzioni e oggetti
Lo script seguente mostra l'uso del polimorfismo tra due diverse classi. Una funzione viene utilizzata per creare l'oggetto di quelle classi. Il valore della variabile denominata colore è inizializzato in __dentro__() metodo di entrambi i 'Pappagallo' e il 'Struzzo'classi al momento della creazione dell'oggetto. Il Caratteristiche() il metodo è definito in entrambe le classi, ma l'output del metodo per ogni classe è leggermente diverso. Il Crea_Oggetto() la funzione viene utilizzata per creare un oggetto della classe. Questa funzione viene eseguita due volte per creare l'oggetto nel 'Pappagallo' classe e nel 'Struzzo' classe. Ciascuno chiamerà il metodo features() di entrambe le classi e stamperà l'output.
#!/usr/bin/env python3# Definisci la classe Parrot
classe pappagallo():
def __init__(self,colore):
se stesso.colore = colore
def caratteristiche (auto):
print("Il colore del pappagallo è %s" %self.colore)
print("Il pappagallo può volare")
# Definisci la classe Struzzo
classe Struzzo():
def __init__(self,colore):
se stesso.colore = colore
def caratteristiche (auto):
print("Il colore dello struzzo è %s" %self.colore)
print("Lo struzzo non può volare")
# Definire la funzione per chiamare il metodo della classe
def Crea_Oggetto(Oggetto):
Oggetto.Caratteristiche()
# Crea un oggetto della classe Parrot
Create_Object(Pappagallo('Verde'))
# Crea un oggetto della classe Struzzo
Create_Object(Struzzo('Bianco e nero'))
Produzione
Il seguente output mostra che l'oggetto del 'Pappagallo' la classe è creata con 'verde' come la colore valore. La funzione stampa l'output chiamando il Caratteristiche() metodo dell'Pappagallo' classe. Successivamente, l'oggetto del 'Struzzo' la classe viene creata con 'Bianco e nero' come la colore valore. La funzione stampa l'output chiamando il Caratteristiche() metodo dell'Struzzo' classe.
Esempio 2: polimorfismo in metodi di classi non correlati
Come nell'esempio precedente, lo script seguente mostra l'uso del polimorfismo in due classi diverse, ma non viene utilizzata alcuna funzione personalizzata per dichiarare l'oggetto. Il __dentro__() metodo di entrambi i 'Manager' e 'Impiegato' le classi inizializzeranno le variabili necessarie. Il polimorfismo viene implementato qui creando il post_dettagli() e stipendio() metodi all'interno di entrambe le classi. Il contenuto di questi metodi è diverso per ciascuna di queste classi. Successivamente, le variabili oggetto vengono create per entrambe le classi e iterate da a per un ciclo continuo. In ogni iterazione, il post_dettagli() e stipendio() vengono chiamati i metodi per stampare l'output.
#!/usr/bin/env python3# Definisci una classe chiamata Manager
Responsabile di classe:
def __init__(self, nome, dipartimento):
se stesso.nome = nome
se stesso.posto = 'Gestore'
se stesso.dipartimento = dipartimento
# Definisci la funzione per impostare i dettagli
def post_details(self):
se stesso.Dipartimento.superiore() == 'HR':
se stesso.base = 30000
altro:
se stesso.base = 25000
se stesso.casaAffitto = 10000
se stesso.trasporto = 5000
print("Il post di %sè%s" %(self.nome, me stesso.inviare))
# Definisci la funzione per calcolare lo stipendio
def stipendio (auto):
stipendio = me stesso.base + auto.casaAffitto + auto.trasporto
restituire lo stipendio
# Definisci una classe chiamata Clerk
impiegato di classe:
def __init__(self, nome):
se stesso.nome = nome
se stesso.post = 'impiegato'
# Definisci la funzione per impostare i dettagli
def post_details(self):
se stesso.base = 10000
se stesso.trasporto = 2000
print("Il post di %sè%s" %(self.nome, me stesso.inviare))
# Definisci la funzione per calcolare lo stipendio
def stipendio (auto):
stipendio = me stesso.base + auto.trasporto
restituire lo stipendio
# Crea oggetti per le classi
manager = Manager("Kabir", "hr")
impiegato = Impiegato("Robin")
# Chiama le stesse funzioni dalle diverse classi
per obj in (direttore, impiegato):
obj.post_dettagli()
print("Lo stipendio è ",obj.stipendio())
Produzione
Il seguente output mostra che l'oggetto del 'Mangiatoia' viene utilizzata nella prima iterazione di per loop e lo stipendio del manager viene stampato dopo il calcolo. L'oggetto dell'Impiegato' viene utilizzata nella seconda iterazione di per loop e lo stipendio dell'impiegato viene stampato dopo il calcolo.
Esempio 3: polimorfismo in metodi di classi correlate
Il seguente script mostra l'uso del polimorfismo tra due classi figlie. Qui, sia 'Triangolo' e 'Cerchio' sono le classi figlie della classe genitore denominata 'Forma_geometrica.'Secondo l'ereditarietà, la classe figlia può accedere a tutte le variabili e metodi della classe genitore. Il __dentro__() metodo dell'Forma_geometrica' viene utilizzata in entrambe le classi figlie per inizializzare la variabile nome usando il super() metodo. I valori di base e altezza del 'Triangolo'la classe verrà inizializzata al momento della creazione dell'oggetto. Allo stesso modo, i valori del raggio del 'Cerchio'la classe verrà inizializzata al momento della creazione dell'oggetto. La formula per calcolare l'area di un triangolo è ½ × base × altezza, che è implementato nel la zona() metodo di il 'Triangolo' classe. La formula per calcolare l'area di un cerchio è 3.14 × (raggio)2, che è implementato nel la zona() metodo dell'Cerchio' classe. I nomi di entrambi i metodi sono gli stessi, qui, ma lo scopo è diverso. Successivamente, verrà preso un valore stringa dall'utente per creare un oggetto e chiamare il metodo in base al valore. Se l'utente digita 'triangolo', allora un oggetto del 'Triangolo' verrà creata la classe, e se l'utente digita 'cerchio', allora un oggetto di 'Cerchio' la classe verrà creata. Se l'utente digita del testo senza "triangolo" o "cerchio", non verrà creato alcun oggetto e verrà stampato un messaggio di errore.
#!/usr/bin/env python3# Definisci la classe genitore
classe Forma_Geometrica:
def __init__(self, nome):
se stesso.nome = nome
# Definisci la classe figlia per calcolare l'area del triangolo
classe Triangolo (Geometric_Shape):
def __init__(self,nome, base, altezza):
super().__init__(nome)
se stesso.base = base
se stesso.altezza = altezza
def area(self):
risultato = 0.5 * sé.base * sé.altezza
print("\nL'area di %s = %5.2f" %(auto.nome, risultato))
# Definisci la classe figlia per calcolare l'area del cerchio
classe Circle(Geometric_Shape):
def __init__(self, nome, raggio):
super().__init__(nome)
se stesso.raggio = raggio
def area(self):
risultato = 3.14 * sé.raggio**2
print("\nL'area di %s = %5.2f" %(auto.nome, risultato))
cal_area=input("Quale area vuoi calcolare? triangolo/cerchio\n")
se cal_area.upper()== 'TRIANGOLO':
base = float(input('Inserisci la base del triangolo: '))
altezza = float(input('Inserisci l'altezza del triangolo: '))
obj = Triangolo('Triangolo',base,altezza)
obj.la zona()
elif cal_area.superiore()== 'CERCHIO':
raggio = float(input('Inserisci il raggio del cerchio: '))
obj = Cerchio('Cerchio', raggio)
obj.la zona()
altro:
print("Inserimento errato")
Produzione
Nel seguente output, lo script viene eseguito due volte. La prima volta, triangolo viene preso come input e l'oggetto viene inizializzato da tre valori, 'Triangolo', base, e altezza. Questi valori vengono quindi utilizzati per calcolare l'area del triangolo e l'output verrà stampato. La seconda volta, cerchio viene preso come input e l'oggetto viene inizializzato da due valori, 'Cerchio' e raggio. Questi valori vengono quindi utilizzati per calcolare l'area del cerchio e l'output verrà stampato.
Conclusione
Questo articolo ha utilizzato semplici esempi per spiegare tre diversi usi del polimorfismo in Python. Il concetto di polimorfismo può essere applicato anche senza classi, metodo che qui non viene spiegato. Questo articolo ha aiutato i lettori a saperne di più su come applicare il polimorfismo nella programmazione Python orientata agli oggetti.