Herança em Python

Neste artigo, entenderemos como a herança pode ser trabalhada na na linguagem Python.

Avatar


31/07/2022 | 18:30 Atualizado há 15 dias

Fala, meus consagrados! Tudo beleza com vocês?

Neste artigo, entenderemos como a herança pode ser trabalhada na na linguagem Python.

Teoria

A herança é um tipo de relacionamento entre classes que significa que uma classe é outra. É uma propriedade dos objetos que permite a criação de uma hierarquia entre eles, onde os descendentes herdem dos seus ancestrais:

  • Suas estruturas de dados; e
  • Seu código.

A Programação Orientada a Objetos (POO) permite que classes herdem o estado e o comportamento comumente utilizados de outras classes.

Python suporta o uso de herança na criação de classes.

Como exemplo inicial, começaremos pela superclasse Pessoa:

 

A superclasse Pessoa possui dois atributos de instância (nome e idade) e um método de instância (saudacao()).

Agora iremos entender como uma classe herda de outra. Na declaração de uma subclasse, após seu nome, deve-se colocar entre parênteses o nome da sua superclasse:

class Sublasse(Superclasse):
    {bloco de instruções}

Para nossa a criação da subclasse Aluno, utilizaremos uma sintaxe para criar uma subclasse que herde os atributos e métodos da sua superclasse (descrita entre parênteses), mas sem incluir atributos e métodos específicos. Para isso, usamos a palavra-chave pass dentro da definição da subclasse:

class Sublasse(Superclasse):
    pass

Exemplo:


No exemplo acima, a classe Aluno é uma subclasse de classe Pessoa (Aluno(Pessoa)). A subclasse Aluno herda os atributos de instância nome e idade, além do método de instância saudacao() da sua superclasse Pessoa, porém, sem incluir atributos e métodos específicos, utilizando-se palavra-chave pass.

Na linha 10, a variável zé apontou para um objeto da superclasse Pessoa. Já a variável kalel, na linha 18, apontou para um objeto da subclasse Aluno.

Percebam que podemos chamar o método saudacao() a partir do objeto apontado pela variável kalel, mesmo sem termos criado esse método na subclasse Aluno.

Para uma subclasse mais completa, podemos criar uma com atributos e métodos de instância específicos, além dos herdados por sua superclasse.

Dentro dos métodos da subclasse, podemos referenciar membros da sua superclasse usando a função super() ou o nome da superclasse.

Sintaxe para criação de uma subclasse:

class Sublasse(Superclasse):
    def __init__(self, parâmetro 1, parâmetro 2, parâmetro N):
        super().__init__(parâmetro 1)
        self.atributo 1 = parâmetro 2
        self.atributo 2 = parametron N
    def nomeMetodo(self, [parâmetro 1, parâmetro 2, ...]):
        {bloco de instruções}
        [return] {valor}

Exemplo:

Como segundo exemplo de subclasse, temos a classe Professor. Além de herdar os atributos e o método de instância da superclasse Pessoa, a subclasse inclui atributos e métodos específicos. A subclasse Professor possui:

  • Três atributos de instância:
    • Dois herdados (nome e idade); e
    • Um específico (curso);
  • Dois métodos de instância:
    • Um herdado (saudacao()); e
    • Um específico (mostrarCurso()).

No método __init__() da subclasse Professor, temos quatro parâmetros formais: self, nome, idade e curso.

Os parâmetros formais nome e idade são repassados para o método __init__() da superclasse Pessoa. Isso é feito através do uso da função super():

super().__init__(nome, idade)

O quarto parâmetro formal curso é usado para inicializar o atributo de instância curso, específico da própria subclasse Professor.

Foi criado um método de instância específico dessa subclasse Professor chamado de mostrarCurso(). Nesse método, acessamos o método saudacao() através da função super(). Após isso, é gerada uma string com o atributo de instância curso.

Na criação do objeto da subclasse Professor, chamamos um construtor com três parâmetros:

rogerao = Professor('Rogerão Araújo', 42, 'Python')

A partir da variável rogerio, podemos acessar tanto o método saudacao() quanto o método mostrarCurso().

Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo

Deixe um comentário

O seu endereço de e-mail não será publicado.