Herança de classes

Introdução à programação orientada a objetos em Python

George Boorman

Curriculum Manager, DataCamp

Reuso de código

 

1. Alguém já fez isso

 

  • Pacotes são ótimos para funcionalidade fixa
  • POO é ótima para personalizar funcionalidades

logos de vários pacotes Python

Introdução à programação orientada a objetos em Python

Reuso de código

 

1. Alguém já fez isso

 

2. DRY: Don't Repeat Yourself

vários elementos de GUI

Introdução à programação orientada a objetos em Python

Reuso de código

 

1. Alguém já fez isso

 

2. DRY: Don't Repeat Yourself

não use vários elementos de GUI

Introdução à programação orientada a objetos em Python

Herança

 

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

Introdução à programação orientada a objetos em Python

Hierarquia de exemplo

Classe BankAccount

Introdução à programação orientada a objetos em Python

Hierarquia de exemplo

SavingsAccount herdando de BankAccount

Introdução à programação orientada a objetos em Python

Hierarquia de exemplo

CheckingAccount também herdando de BankAccount

Introdução à programação orientada a objetos em Python

Hierarquia de exemplo

CheckingAccount tem um método withdraw modificado

Introdução à programação orientada a objetos em Python

Implementando herança de classe

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

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


# Class inheriting from BankAccount class SavingsAccount(BankAccount): pass
  • BankAccount: Classe pai cuja funcionalidade é estendida/herdada
  • SavingsAccount: Classe filha/subclasse que herda e adiciona mais
Introdução à programação orientada a objetos em Python

A 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)
Introdução à programação orientada a objetos em Python

Herança: relação "é um(a)"

Um SavingsAccount é um 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
Introdução à programação orientada a objetos em Python

Vamos praticar!

Introdução à programação orientada a objetos em Python

Preparing Video For Download...