Herança de classes

Programação orientada a objetos em Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Reutilização de código

Programação orientada a objetos em Python

Reutilização de código

 

1. Alguém já fez isso

 

  • Módulos são ótimos para funcionalidades fixas
  • POO é ótima para personalizar funcionalidades

logos de vários pacotes python

Programação orientada a objetos em Python

Reutilização de código

 

1. Alguém já fez isso

 

2. DRY: Não se repita

vários elementos de interface gráfica

Programação orientada a objetos em Python

Reutilização de código

 

1. Alguém já fez isso

 

2. DRY: Não se repita

não use vários elementos de interface gráfica

Programação orientada a objetos em Python

Herança

 

$$\Large{\text{Funcionalidade da nova classe = Funcionalidade da classe antiga + extra}}$$

Programação orientada a objetos em Python

classe conta

Programação orientada a objetos em Python

conta poupança herdada de conta

Programação orientada a objetos em Python

duas classes herdadas de conta

Programação orientada a objetos em Python

método modificado na conta corrente

Programação orientada a objetos em Python

Implementando herança de classes

class BankAccount:
    def __init__(self, balance):
       self.balance = balance

    def withdraw(self, amount):
        self.balance -= amount

# Classe vazia herdada de BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Faça algo aqui
  • MyParent: classe cuja funcionalidade está sendo estendida/herdada
  • MyChild: classe que herdará a funcionalidade e adicionará mais
Programação orientada a objetos em Python

Classe filha tem todos os dados da pai

# Construtor herdado de BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Atributo herdado de BankAccount
savings_acct.balance
1000
# Método herdado de BankAccount
savings_acct.withdraw(300)
Programação orientada a objetos em Python

Herança: relação "é-um"

Uma SavingsAccount é uma BankAccount

(possivelmente com recursos especiais)

savings_acct = SavingsAccount(1000)
isinstance(savings_acct, SavingsAccount)
True
isinstance(savings_acct, BankAccount)
True

 

 

acct = BankAccount(500)
isinstance(acct,SavingsAccount)
False
isinstance(acct,BankAccount)
True
Programação orientada a objetos em Python

Vamos praticar!

Programação orientada a objetos em Python

Preparing Video For Download...