Python Tutorial - Herança de Classe

  1. Sobreposição do método Python Class Inheritance
  2. Herança múltipla da classe Python
  3. Herança da Classe Python de Múltiplos Níveis

Nesta seção, você aprenderá a herança da programação orientada a objetos Python.

Em Herança, uma classe criança é criada a partir de uma classe pai. A classe filha herda tudo (membros de dados e funções de membros) da classe pai.

O seguinte é a sintaxe da herança em Python:

class ParentClass:
    #members
class ChildClass(ParentClass):
    #members

Na classe filha, você tem todas as características da classe pai e novas funcionalidades também podem ser adicionadas.

Como no exemplo abaixo, ela tem uma classe pai chamada Auto e uma classe filha Car é herdada dela.

>>> 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

Você pode ver aqui que os métodos da classe Auto podem ser utilizados na classe Car. É porque o Car é herdado de Auto.

Dentro do construtor de Car, o construtor de Auto é chamado. O objeto Car pode ser utilizado para chamar todos os métodos de Auto.

Sobreposição do método Python Class Inheritance

A substituição do método é quando você tem os mesmos métodos para ambas as classes de crianças e pais. A substituição de métodos é basicamente um conceito no qual uma classe filha muda a implementação de métodos da sua classe mãe.

Considere o exemplo onde a classe filha Car tem o mesmo método display como na classe Auto mas a implementação é alterada:

>>> 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

Então agora quando o método display é chamado no objeto c, o método da classe filha é invocado.

Herança múltipla da classe Python

A herança múltipla acontece quando uma classe de crianças tem mais de uma classe de pais. As funcionalidades de cada classe dos pais são herdadas pela classe da criança.

A seguir está a sintaxe da herança múltipla:

class A:
    #members
class B:
    #members
class child(A, B):
    #members

Exemplo:

>>> 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

Deve-se notar que o objeto C (classe filha) pode chamar os métodos de suas classes pai de A e B. Portanto, você pode dizer que C herda tudo de A e B.

Herança da Classe Python de Múltiplos Níveis

Herança multinível é quando você herda uma classe de criança de outra classe de criança.

A sintaxe da herança multinível é a seguinte:

class A:
    #members
class B(A):
    #members
class C(B):
    #members

Exemplo:

>>> 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

Você pode ver aqui que a classe C pode invocar os métodos das suas classes pai e avô.