Tutorial sul Python - Eredità di classe

Jinku Hu 30 gennaio 2023
  1. Ereditarietà di classe Python Method Overriding
  2. Classe Python Ereditarietà multipla
  3. Eredità a più livelli della classe Python
Tutorial sul Python - Eredità di classe

In questa sezione, imparerete l’eredità della programmazione orientata agli oggetti Python.

In Inheritance, una classe figlia viene creata da una classe genitore. La classe child eredita tutto (dati membri e funzioni dei membri) dalla classe genitore.

La seguente è la sintassi dell’ereditarietà in Python:

class ParentClass:
    # members


class ChildClass(ParentClass):
    # members

Nella classe child, si hanno tutte le caratteristiche della classe genitore e si possono anche aggiungere nuove funzionalità.

Come nell’esempio qui sotto, ha una classe genitore chiamata Auto e da essa viene ereditata una classe figlia Car.

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto:  Prius
Engine of auto:  1.5l

Si può vedere qui che i metodi della classe Auto possono essere usati nella classe Car. Questo perché Car è ereditata da Auto.

All’interno del costruttore di Car, viene chiamato il costruttore di Auto. L’oggetto Car può essere usato per chiamare tutti i metodi di Auto.

Ereditarietà di classe Python Method Overriding

La prevalenza del metodo è quando si hanno gli stessi metodi sia per le classi dei figli che per quelle dei genitori. Il Method overriding è fondamentalmente un concetto in cui una classe figlio cambia l’implementazione dei metodi della sua classe genitore.

Si consideri l’esempio in cui la classe child Car ha lo stesso metodo display della classe Auto ma l’implementazione viene cambiata:

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)
    def display(self):
		print("You are in child class")

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class

Così ora, quando il metodo display è chiamato nell’oggetto c, viene invocato il metodo della classe figlia.

Classe Python Ereditarietà multipla

L’eredità multipla avviene quando una classe di bambini ha più di una classe di genitori. Le funzionalità di ogni classe genitore sono ereditate dalla classe figlia.

La seguente è la sintassi dell’ereditarietà multipla:

class A:
    # members


class B:
    # members


class child(A, B):
    # members

Esempio:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B:
	def dispB(self):
		print('You are in class B')

		
>>> class C(A, B):
	def dispC(self):
		print('You are in class C')

>>> Cobj = C()
>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Va notato che l’oggetto C (classe figlia) può chiamare i metodi delle sue classi genitrici A e B. Pertanto, si può dire che C eredita tutto di A e B.

Eredità a più livelli della classe Python

L’eredità multilivello è quando si eredita una classe figlia da un’altra classe figlia.

La sintassi dell’ereditarietà multilivello è la seguente:

class A:
    # members


class B(A):
    # members


class C(B):
    # members

Esempio:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B(A):
	def dispB(self):
		print('You are in class B')

		
>>> class C(B):
	def dispC(self):
		print('You are in class C')
        
>>> Cobj = C()

>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Si può vedere qui che la classe C può invocare i metodi delle classi genitore e nonno.

Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook