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