Python Tutorial - Herança de Classe
- Sobreposição do método Python Class Inheritance
- Herança múltipla da classe Python
- 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ô.
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