Ereditarietà Python

Ereditarietà Python

L'ereditarietà ci permette di definire una classe che deriva tutti i metodi e le proprietà di un'altra classe.

Classe padreÈ una classe derivata, anche detta classe base.

Classe figliaÈ una classe derivata da un'altra classe, anche detta classe derivata.

Creare una classe padre

Ogni classe può essere una classe padre, quindi la sintassi è la stessa di quando si crea qualsiasi altra classe:

Esempio

Creare una classe denominata Person che contiene le proprietà firstname e lastname e il metodo printname:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
# Creare un oggetto con Person e eseguire il metodo printname:
x = Person("Bill", "Gates")
x.printname()

Eseguire L'Esempio

Creare una sottoclasse

Per creare una classe che erediterà funzionalità da altre classi, inviare il padre come parametro durante la creazione della sottoclasse:

Esempio

Creare una classe chiamata Student che erediterà le proprietà e i metodi dalla classe Person:

class Student(Person):
  pass

Nota:Se non si desidera aggiungere altre proprietà o metodi alla classe, utilizzare pass chiave.

Ora, la classe Student ha le stesse proprietà e metodi della classe Person.

Esempio

Creare un oggetto con la classe Student e eseguire il metodo printname:

x = Student("Elon", "Musk")
x.printname()

Eseguire L'Esempio

Aggiungere __init__()

Finora, abbiamo creato una sottoclasse che ha ereditato le proprietà e i metodi del padre.

vogliamo aggiungere __init__() funzione aggiunta alla sottoclasse (non pass chiave).

Nota:Ogni volta che si utilizza la classe per creare un nuovo oggetto, la funzione __init__() viene chiamata automaticamente.

Esempio

Aggiungere la funzione __init__() alla classe Student:

class Student(Person):
  def __init__(self, fname, lname):
    # Aggiungere proprietà ecc.

Quando si aggiunge la funzione __init__(), la sottoclasse non erediterà più la funzione __init__() del padre.

Nota:La funzione __init__() del figlio sovrascriverà l'ereditarietà della funzione __init__() del padre.

Per mantenere l'ereditarietà della funzione __init__() del padre, aggiungere la chiamata alla funzione __init__() del padre:

Esempio

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

Eseguire L'Esempio

Ora, abbiamo aggiunto con successo la funzione __init__() e mantenuto l'ereditarietà della classe padre, siamo pronti ad aggiungere funzionalità alla funzione __init__().

usando la funzione super()

Python ha anche un super() funzione, farà sì che la sottoclasse erediterà tutti i metodi e le proprietà dal padre:

Esempio

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

Eseguire L'Esempio

usando la funzione super() funzione, non è necessario utilizzare il nome dell'elemento padre, erediterà automaticamente i metodi e le proprietà dal suo elemento padre.

aggiungere proprietà

Esempio

Aggiungi Un graduationyear aggiungere le proprietà a Student Classe:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

Eseguire L'Esempio

In Questo Esempio, L'Anno 2019 Dovrebbe Essere Un Variabile E Passato Al Generico Student Durante La Creazione Dello Oggetto. Per Fare Questo, Aggiungi Un Altro Parametro Al Funzione __init__():

Esempio

Aggiungi year Parametri, E Passali La Corretta Anno Durante La Creazione Dello Oggetto:

class Student(Person):
  def __init__(self, fname, lname, year)
    super().__init__(fname, lname)
    self.graduationyear = year
x = Student("Elon", "Musk", 2019)

Eseguire L'Esempio

Aggiungi Metodo

Esempio

Aggiungi Un welcome Aggiungi Il Metodo Al Generico Student:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year
  def welcome(self):
    print("Benvenuto", self.firstname, self.lastname, "alla classe di", self.graduationyear)

Eseguire L'Esempio

Suggerimento:Se Aggiungi Un Metodo Con Lo Stesso Nome Di Un Metodo Del Padre Nella Sottoclasse, Copierai L'Ereditarieta' Del Metodo Padre.