Python Tutorial - Herança de Classe

Jinku Hu 30 janeiro 2023
  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
Python Tutorial - Herança de Classe

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

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