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
A classe que vai receber a classe base como herança recebe a classe base na sua definição, entre parênteses.
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()
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()
Exemplo
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.
# 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()
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()
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
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.
class classeBase:
def __init__(self):
print('Classe base iniciada...')
class classeFilho(classeBase):
def __init__(self):
print('Classe filho iniciada...')
pessoa = classeFilho()
def __init__(self):
print('Classe base iniciada...')
class classeFilho(classeBase):
def __init__(self):
print('Classe filho iniciada...')
pessoa = classeFilho()
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()
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