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.