Esempio 1: uso della funzione super() in una singola eredità
Quando una classe figlia viene creata ereditando una classe genitore, allora si chiama ereditarietà singola. L'uso del super() funzione in Ereditarietà singola è mostrata nel seguente script. Libro è la classe genitore qui che contiene un metodo di costruzione per inizializzare i dati, tipo di libro() metodo per stampare il tipo di libro, e sconto() il metodo per visualizzare l'offerta di sconto è disponibile o meno. Ita_libro è la classe figlia qui che contiene un metodo costruttore in cui il super() la funzione viene utilizzata per chiamare il costruttore della classe genitore. La classe figlia ha un altro metodo chiamato display_details() per stampare le informazioni dettagliate del libro. Gli oggetti di entrambe le classi genitore e figlio sono stati creati in seguito per chiamare i diversi metodi delle classi.
# Definisci la classe genitorelibro di classe:
# Definisci costruttore
def __init__(self, titolo, autore, tipo, offerta):
se stesso.titolo = titolo
se stesso.autore = autore
se stesso.tipo = tipo
se stesso.offerta = offerta
# Definire la funzione per visualizzare il tipo di libro
def bookType(self):
se stesso.tipo == 1:
print("%s è un libro %s." %(se stesso.titolo, 'Ingegneria'))
se stesso.tipo == 2:
print("%s è un libro %s." %(se stesso.titolo, 'Medico'))
se stesso.tipo == 3:
print("%s è un libro %s." %(se stesso.titolo, 'Finanza'))
# Definire la funzione per visualizzare l'offerta di sconto
def sconto (auto):
se stesso.offerta == Vero:
print("Il libro ha un'offerta di sconto.")
altro:
print("Il libro non ha sconti.")
# Definisci la classe figlia
classe Eng_book(Libro):
# Definisci costruttore
def __init__(self, titolo, autore, tipo, offerta, prezzo):
super().__init__(titolo, autore, tipo, offerta)
se stesso.prezzo = prezzo
# Definire la funzione per visualizzare i dettagli del libro
def display_details(self):
super().sconto()
se stesso.offerta == Vero:
se stesso.prezzo = auto.prezzo - auto.prezzo * 0.15
print("Nome libro :%s" %self.titolo)
print("Nome autore :%s" % self.autore)
print("Prezzo: %0.2f"% auto.prezzo)
print("Uso della classe principale:")
# Definisci l'oggetto della classe genitore
objbook = Book('Microbiologia medica', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick', 2, Falso)
# Funzione di chiamata per visualizzare il tipo di libro
objbook.tipo di libro()
# Funzione di chiamata per visualizzare l'offerta di sconto
objbook.sconto()
print("\nUso della classe figlio:")
# Definisci l'oggetto della classe figlio
objEngBook = Eng_book('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Funzione di chiamata per visualizzare i dettagli del libro
objEngBook.display_details()
Produzione:
Il seguente output apparirà dopo aver eseguito lo script sopra. Il primo output è stato generato utilizzando l'oggetto della classe genitore e il secondo output è stato generato utilizzando l'oggetto della classe figlio.
Esempio 2: uso della funzione super() in eredità multiple
Quando una nuova classe viene generata ereditando più classi, questo tipo di ereditarietà viene chiamato ereditarietà multipla. L'uso della funzione super() nelle eredità multiple è mostrato nel seguente script. Dipartimento è la classe genitore che contiene un metodo costruttore per inizializzare le variabili e il Schermo() metodo per stampare il nome del reparto. Corsi sono la classe figlio ereditata dal Dipartimento classe e contiene un metodo costruttore e il display_informazioni_corso() metodo per visualizzare i dettagli del corso. Insegnanti sono la classe figlio ereditata dal Dipartimento classe e contiene un metodo costruttore e il display_Insegnante_info() metodo per visualizzare i dettagli dell'insegnante. Insegnante_Corso è l'ultima classe figlio dello script che è stata definita ereditando entrambi Corsi e Insegnanti classi. Gli oggetti delle tre classi figlie sono stati creati alla fine dello script per accedere ai diversi metodi delle classi. Il super() la funzione è stata utilizzata all'interno del metodo costruttore di tutte le classi figlie per chiamare il costruttore della classe genitore. Sono necessari quattro valori di argomento per creare l'oggetto classe figlio perché il costrutto della classe Department contiene quattro argomenti.
# Definisci la classe principaleclasse Reparto():
def __init__(self, nome_dipartimento, corsi_totale, credito_totale, insegnanti_totali):
se stesso.nome_dipartimento = nome_dipartimento
se stesso.corsi_totali = corsi_totali
se stesso.credito_totale = credito_totale
se stesso.insegnanti_totali = insegnanti_totali
def display(auto):
print("Nome dipartimento: %s" % self.nome_dipartimento)
# Definisci la prima classe figlio
Corsi di classe (Dipartimento):
def __init__(self, nome, corsi, crediti, docenti):
# Chiama il costruttore della classe genitore
super().__init__(nome, corsi, crediti, docenti)
def display_Course_info(self):
print("Totale corsi: %d" % self.corsi_totali)
print("Totale crediti: %d" % self.credito_totale)
# Definisci la seconda classe figlio
Insegnanti di classe (Dipartimento):
def __init__(self, nome, corsi, crediti, docenti):
# Chiama il costruttore della classe genitore
super().__init__(nome, corsi, crediti, docenti)
def display_Teacher_info(self):
print("Totale insegnanti: %d" % self.insegnanti_totali)
# Definire la terza classe figlia ereditata da due classi
class Teacher_Course(Corsi, Insegnanti):
def __init__(self, nome, corsi, crediti, docenti):
# Chiama il costruttore della classe genitore
super().__init__(nome, corsi, crediti, docenti)
def display_details(self):
super().Schermo()
super().display_informazioni_corso()
super().display_Insegnante_info()
print("Uso della prima classe figlia")
objCourses = Corsi('CSE', 72, 150, 50)
objCorsi.Schermo()
objCorsi.display_informazioni_corso()
print("\nUso della seconda classe figlia")
objInsegnanti = Insegnanti('BBA', 65, 140, 55)
objInsegnanti.Schermo()
objInsegnanti.display_Insegnante_info()
print("\nUso della terza classe figlia ereditata da più classi")
objDCT = Teacher_Course('Inglese', 60, 122, 20)
objDCT.display_details()
Produzione:
Il seguente output apparirà dopo aver eseguito lo script sopra. Qui sono stati generati tre output creando gli oggetti di tre classi figlie.
Conclusione:
Il super() la funzione può essere utilizzata solo all'interno della classe figlia per chiamare il costruttore e qualsiasi altro metodo della classe padre. Gli usi di questa funzione sono stati mostrati in questo tutorial creando ereditarietà a livello singolo e multilivello. Spero che lo scopo dell'utilizzo di questa funzione in OOP venga chiarito dopo aver letto questo tutorial.