domingo, 29 de março de 2020

Herança em Python

Herança em Python


A herança é utilizada na programação orientada a objetos para evitar códigos duplicados. Com a herança uma classe pode receber todos os métodos e propriedades de outra classe, evitando assim código duplicado. A classe que está sendo herdada é chamada de classe base ou pai. E a classe que recebe essa herança e chamada de classe filho.

Criando uma classe com herança

Toda classe pode receber outra classe como herança. Primeiro vamos criar a classe base e depois a classe que vai receber a herança da classe base.
Exemplo
class classeBase:
  def __init__(self, nome, u_nome):
    self.nome = nome
    self.u_nome = u_nome

  def shownome(self):
    print(self.nome)

pessoa = classeBase('Mickey', 'Mouse')
pessoa.shownome()
A classe que vai receber a classe base como herança recebe a classe base na sua definição, entre parênteses.
Exemplo
# Classe base
class classeBase:
  def __init__(self, nome, u_nome):
    self.nome = nome
    self.u_nome = u_nome

  def shownome(self):
    print(self.nome)

# Classe herdeira da classe base
class classeFilho(classeBase):
  pass

pessoa = classeFilho('Mickey', 'Mouse')
pessoa.shownome()
Note que não codificamos nada na classeFilho mais ela recebeu como herança a classeBase por isso ela tem todos os seu métodos e propriedades.
A palavra reservada pass serve para o compilador python não apresentar um erro. A nossa classe filho não faz nada, sem a palavra reservada pass o compilador iria esperar alguma coisa, como um atributo, um método etc. Com a palavra pass o compilador não espera nada, ele pula para a próxima linha de código.

Função init

Quando uma classe recebe a herança de outra classe a função init da classe filho é a mesma da classe base. Para mudar isso é só criar uma classe init na classe que recebeu a herança.
Exemplo
class classeBase:
  def __init__(self):
    print('Classe base iniciada...')

class classeFilho(classeBase):
  def __init__(self):
    print('Classe filho iniciada...')

pessoa = classeFilho()
Nesse exemplo, a função init da classe base foi subscrita. Para a função init, da classe base, ser executada a função precisa ser chamada da classe filho.
Exemplo
class classeBase:
  def __init__(self):
    print('Classe base iniciada...')

class classeFilho(classeBase):
  def __init__(self):
    classeBase.__init__(self)
    print('Classe filho iniciada...')

pessoa = classeFilho()

0 comentários:

Postar um comentário