Herencia de clases

Programación orientada a objetos en Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Reutilización de código

Programación orientada a objetos en Python

Reutilización de código

 

1. Alguien ya lo hizo

 

  • Los módulos son geniales para funcionalidad fija
  • OOP es genial para personalizar funcionalidad

logos de varios paquetes de python

Programación orientada a objetos en Python

Reutilización de código

 

1. Alguien ya lo hizo

 

2. DRY: No te repitas

varios elementos de interfaz gráfica

Programación orientada a objetos en Python

Reutilización de código

 

1. Alguien ya lo hizo

 

2. DRY: No te repitas

no uses varios elementos de interfaz gráfica

Programación orientada a objetos en Python

Herencia

 

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

Programación orientada a objetos en Python

clase cuenta

Programación orientada a objetos en Python

cuenta de ahorros heredada de cuenta

Programación orientada a objetos en Python

dos clases heredadas de cuenta

Programación orientada a objetos en Python

método modificado en cuenta corriente

Programación orientada a objetos en Python

Implementación de herencia de clases

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

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

# Clase vacía heredada de BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Haz cosas aquí
  • MyParent: clase cuya funcionalidad se extiende/hereda
  • MyChild: clase que hereda la funcionalidad y añade más
Programación orientada a objetos en Python

Clase hija tiene todos los datos del 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)
Programación orientada a objetos en Python

Herencia: relación "es-un"

Un SavingsAccount es un BankAccount

(posiblemente con características 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
Programación orientada a objetos en Python

¡Vamos a practicar!

Programación orientada a objetos en Python

Preparing Video For Download...