Leitura recomendada
Objetivos
Herança
Outro conceito de O.O que vamos aplicar na linguagem Python, é o conceito de herança
que pode ser resumido a um relacionamento é-um em que uma classe herda características
de uma classe pai podendo utilizar os recursos dessa classe e também estendê-la.
A sintaxe para a utilização de herança entre classes é feita da utilizando o nome da classe que
desejamos herdar informada como argumento para o operador () como mostrado abaixo:
Sintaxe
class nome_classe_pai:
#atributos
#métodos
class nome_classe_filha (nome_classe_pai) #herança
#atributos
#métodos
Onde
-
Não há diferença na instanciação de um objeto utilizando uma classe que usa o conceito de herança.
Os termos Pai e Filha acima serão utilizados ao longo deste tutorial para facilitar a compreensão.
Exemplo 1
class pai:
x = 1
#métodos omitidos
class filha(pai):
y = 2
#métodos omitidos
Saída
-
Método Construtor e Herança
Em Python, o construtor padrão, sem parâmetros não é invocado automaticamente quando
instanciamos um objeto da classe filha.
Exemplo 2
class pai:
def __init__(self):
print("__init__ pai")
class filha(pai):
def __init__(self):
print("__init__ filha")
ob2 = filha()
Saída
__init__ filha
A chamada ao construtor da classe pai deve ser feita implícitamente como mostrado na
sintaxe abaixo:
Sintaxe
class nome_classe_filha:
def __init__(self, <parametros>)
nome_classe_pai.__init__(self,<parametros>)
#corpo
Exemplo 3
class pai:
param = 0
def __init__(self,param):
self.param = param
print("__init__ pai")
class filha(pai):
def __init__(self,param):
pai.__init__(self,param)
print("__init__ filha")
obj = filha("Teste")
print(obj.param)
Saída
__init__ pai
__init__ filha
Teste
Acessar recursos da classe pai
Como estamos utilizando herança, uma classe filha tem acesso aos recursos public e
protected da classe pai. Para acesso a esses recursos, utilizamos o nome da classe
pai herdade.
Sintaxe
classe_pai.nome_atributo
classe_pai.nome_metodo(<list_argumentos>)
Exemplo 4
class pai:
param = 999
def metodo_pai():
print("metodo_pai")
class filha(pai):
def metodo_filha():
print(pai.param)
pai.metodo_pai()
obj = filha
obj.metodo_filha()
Saída
999
Outro conceito O.O que vamos aplicar na linguagem Python, é o conceito de sobrescrita
que consiste em uma classe Filha alterar a implementação de um método herdado da classe Pai.
Dessa forma, a classe Filha pode utilizar uma mesma assinatura de método com comportamento
diferente.
Exemplo 5
class pai:
def metodo(self,p): #método para sobrescrever
print("%d" % p) #decimal
class filha(pai):
def metodo(self,q): #método sobrescrito
print("%x" % q) #hexa
obj = pai()
obj.metodo(10)
obj = filha()
obj.metodo(10)
Saída
10
a
Por padrão, qualquer método public, protected e private podem sofrer sobreescrita
quando sua classe for herdada. A linguagem Python não possui recurso para prevenir a sobrescrita.
Herança múltipla
A herança mútipla de classes em Python utiliza a mesma sintaxe de herança simples, exceto que
mútliplas classes são informadas na declaração da classe.
Sintaxe
class classe_pai:
#atributos
#métodos
class classe_filha (classe_pai1, ... , classe_paiN) #herança
#atributos
#métodos
Exemplo 6
class Pai1:
pass
class Pai2:
pass
class Filha(Pai1, Pai2):
pass
Saída
-
Exemplo 7
class Pai1:
atributo1 = 1
def metodo1(self):
print(self.atributo1)
class Pai2:
atributo2 = 2
def metodo2(self):
print(self.atributo2)
class Filha(Pai1, Pai2):
pass
obj = Filha()
print(obj.atributo1)
print(obj.atributo2)
obj.metodo1()
obj.metodo2()
Saída
1
2
1
2
Histórico de atualizações
- 12/09/2025 - revisão 2 - Ajustes: pontuais, target de links, sintaxes e objetivos; Adição: 'Herança múltipla'
- 19/09/2024 - revisão 2 - Correções em descrição de tópicos; ajustes gramaticais; outros ajustes
- 30/08/2024 - revisão 1 - Correção em link de Construtor e Herança
- 20/02/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.