Python

Utilizando herança no Python

Veja na prática como usar herança no Python.

há 5 anos 7 meses

Formação Desenvolvedor Python
Conheça a formação em detalhes

Desenvolvida originalmente sob o paradigma funcional, o Python precisou evoluir com o tempo para se adequar ao mercado competitivo e, assim, se tornar uma das linguagens mais utilizadas do mundo. Para isso, um dos principais recursos que foram implementados foi o suporte ao paradigma orientado ao objetos, porém, sem perder a essencia da linguagem, fazendo com que muita coisa seja implementada de forma diferente quando comparado com o Java ou o C#, por exemplo. Uma dessas mudanças foi a adição do recurso de herança na linguagem e que veremos como utilizá-la neste artigo.

O que é a Herança?

A Herança é um conceito do paradigma da orientação à objetos que determina que uma classe (filha) pode herdar atributos e métodos de uma outra classe (pai) e, assim, evitar que haja muita repetição de código.

Um exemplo do conceito de herança pode ser visto no diagrama a seguir:

Nele temos que as classes filhas Gato, Coelho e Cachorro herdam os atributos e métodos da classe pai Animal e, assim caracterizando a herança.

Não vamos entrar em muitos detalhes sobre o conceito da herança, mas se você quiser estudar um pouco mais a fundo esse conceito, recomendo um outro artigo aqui do blog: Devo usar herança ou composição?

Como usar a herança no Python?

Para utilizar a herança no Python é bem simples. Assim com vimos no diagrama acima, vamos criar quatro classes para representar as entidades Animal, Gato, Cachorro e Coelho.

Obs: não vamos nos preocupar com a implementação de métodos e atributos, vamos criar apenas o básico para demonstrar o conceito da herança.

class Animal():
    def __init__(self, nome, cor):
        self.__nome = nome
        self.__cor = cor

    def comer(self):
        print(f"O {self.__nome} está comendo")

No código acima definimos a classe pai que irá possuir todos os atributos e métodos comuns às classes filhas (Gato, Cachorro e Coelho). Nela, criamos apenas o construtor que irá receber o nome e a cor do animal, além do método comer que vai exibir a mensagem com o nome do animal que está comendo.

Após isso, criamos as três classes “filhas” da classe Animal. Para definir que estas classes são herdeiras da classe Animal, declaramos o nome da classe pai nos parenteses logo após definir o nome da classe, como podemos ver abaixo:

import animal

class Gato(animal.Animal):
    def __init__(self, nome, cor):
        super().__init__(nome, cor)
import animal

class Cachorro(animal.Animal):
    def __init__(self, nome, cor):
        super().__init__(nome, cor)
import animal

class Coelho(animal.Animal):
    def __init__(self, nome, cor):
        super().__init__(nome, cor)

Note que as classes filhas só estão repassando seus dados de nome e cor para a classe Pai através do super() e que nenhum método foi implementado dentro dessas classes.

Agora, por herdar da classe Animal, as classes Gato, Cachorro e Coelho podem, sem nenhuma alteração, utilizar o método comer(), definido na classe Animal pois elas herdam dessa classe, logo elas possuem a permissão de invocar este método:

import gato, cachorro, coelho

gato = gato.Gato("Bichano", "Branco")
cachorro = cachorro.Cachorro("Totó", "Preto")
coelho = coelho.Coelho("Pernalonga", "Cinza")

gato.comer()
cachorro.comer()
coelho.comer()

Ao executar o código acima, obtemos o seguinte retorno no terminal:

O Bichano está comendo
O Totó está comendo
O Pernalonga está comendo

E é dessa forma que é implementado o conceito de herança no Python. Há muitos outros conceitos, dentro da herança, a serem abordados, como a sobrescrita de métodos, herança múltipla… Mas não se preocupem, estes tópicos serão abordados em breve. :)

Ah, claro, muito te recomendo o nosso completo curso sobre Orientacão a Objetos com Python:

Python - Orientação a objetos
Curso Python - Orientação a objetos
Conhecer o curso

Espero vocês lá. Abraço!

Autor(a) do artigo

Fagner Pinheiro
Fagner Pinheiro

Professor na TreinaWeb e graduado em Sistemas de Informação pelo Instituto Federal da Bahia. Apaixonado por desenvolvimento web, desktop e mobile desde os 12 anos de idade. Já utilizou todos os sistemas operacionais possíveis, mas hoje se contenta com o OSX instalado em seu desktop. Quando não está trabalhando, é IGL e Awper do time de CS:GO da Treinaweb. Até passou em uma peneira do Cruzeiro, mas preferiu estudar Python.

Todos os artigos

Artigos relacionados Ver todos