Herencia de clases

Introducción a la programación orientada a objetos en Python

George Boorman

Curriculum Manager, DataCamp

Reutilizar código

 

1. Alguien ya lo hizo

 

  • Los paquetes van bien para funcionalidad fija
  • La POO va bien para personalizar funcionalidad

logos de varios paquetes de python

Introducción a la programación orientada a objetos en Python

Reutilizar código

 

1. Alguien ya lo hizo

 

2. DRY: No te repitas

varios elementos de interfaz gráfica

Introducción a la programación orientada a objetos en Python

Reutilizar código

 

1. Alguien ya lo hizo

 

2. DRY: No te repitas

no uses varios elementos de interfaz gráfica

Introducción a la programación orientada a objetos en Python

Herencia

 

$$\Large{\text{Funcionalidad nueva = Funcionalidad antigua + extra}}$$

Introducción a la programación orientada a objetos en Python

Jerarquía de ejemplo

Clase BankAccount

Introducción a la programación orientada a objetos en Python

Jerarquía de ejemplo

SavingsAccount hereda de BankAccount

Introducción a la programación orientada a objetos en Python

Jerarquía de ejemplo

CheckingAccount también hereda de BankAccount

Introducción a la programación orientada a objetos en Python

Jerarquía de ejemplo

CheckingAccount tiene un método withdraw modificado

Introducción a la programación orientada a objetos en Python

Implementar herencia de clases

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: Clase padre cuya funcionalidad se extiende/se hereda
  • SavingsAccount: Clase hija/subclase que hereda la funcionalidad y añade más
Introducción a la programación orientada a objetos en Python

La clase hija tiene todos los datos de la padre

# Constructor heredado de BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Atributo heredado de BankAccount
savings_acct.balance
1000
# Método heredado de BankAccount
savings_acct.withdraw(300)
Introducción a la programación orientada a objetos en Python

Herencia: relación «es-un»

Un SavingsAccount es un BankAccount

(quizá con funciones especiales)

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
Introducción a la programación orientada a objetos en Python

¡Vamos a practicar!

Introducción a la programación orientada a objetos en Python

Preparing Video For Download...