Pitone

Funzione Python super()

Funzione Python super()
Uno script Python può eseguire sia la programmazione strutturata che la programmazione orientata agli oggetti (OOP). Super() è una funzione Python integrata di OOP. La conoscenza di base dell'OOP è preferita per comprendere lo scopo e l'uso del super() metodo. Una delle caratteristiche importanti di OOP è l'ereditarietà. Una nuova classe può essere creata ereditando le caratteristiche di un'altra classe e si chiama Ereditarietà. Qui, la nuova classe è chiamata sottoclasse o classe figlia e un'altra classe è chiamata superclasse o classe genitore parent. Il super() la funzione viene utilizzata nella classe figlio per fare riferimento alla classe padre e accedere a tutte le variabili e metodi della classe padre. Questa funzione rende l'ereditarietà più gestibile. Come questa funzione può essere utilizzata in Python è stato mostrato in questo tutorial.

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 genitore
libro 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 principale
classe 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.

Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...