Coletânea Python do ZERO às Redes Neurais Artificiais

Fernando Feltrin · Capítulo 186 de 287

Páginas do PDF

Coletânea Python do ZERO às Redes Neurais Artificiais

Herança

 

Na estrutura de código de um determinado programa todo orientado a objetos, é bastante comum que algumas classes em teoria possuam exatamente as mesmas características que outras, porém isso não é nada eficiente no que diz respeito a quantidade de linhas de código uma vez que esses blocos, já que são idênticos, estão repetidos no código. Por Exemplo:

 

Dado o exemplo acima, note que temos duas classes para dois carros diferentes, Corsa e Gol, e repare que as características que irão identificar os mesmos, aqui nesse exemplo bastante básico, seria um nome e o ano do veículo. Duas classes com a mesma estrutura de código repetida duas vezes.

Podemos otimizar esse processo criando uma classe molde de onde serão lidas e interpretadas todas essas características de forma otimizada por nosso interpretador.

Vale lembrar que neste exemplo são apenas duas classes, não impactando na performance, mas numa aplicação real pode haver dezenas ou centenas de classes idênticas em estrutura, o que acarreta em lentidão se lidas uma a uma de forma léxica.

Reformulando o código, é criada uma classe de nome Carro que servirá de molde para as outras, dentro de si ela tem um método construtor assim como recebe como atributos de classe um nome e um ano.

A partir de agora as classes Corsa e Gol simplesmente recebem como parâmetro a classe Carro, recebendo toda sua estrutura. Internamente o interpretador não fará distinção e assumirá que cada classe é uma classe normal, independente, inclusive com alocações de memória separadas para cada classe, porém a estrutura do código dessa forma é muito mais enxuta.

 

Na literatura, principalmente autores que escreveram por versões anteriores do Python costumavam chamar esta estrutura de classes e subclasses, apenas por convenção, para que seja facilitada a visualização da hierarquia das mesmas.

Vale lembrar também que uma “subclasse” pode ter mais métodos e atributos particulares a si, sem problema nenhum, a herança ocorre normalmente a tudo o que estiver codificado na classe mãe, porém as classes filhas desta tem flexibilidade para ter mais atributos e funções conforme necessidade.

Ainda sob o exemplo anterior, a subclasse Corsa, por exemplo, poderia ser mais especializada tendo maiores atributos dentro de si além do nome e ano herdado de Carro.