>> <<

Lenguaje Python

Clases abstractas

Para definir una clase como abstracta en Python, debemos importar el módulo abc (acrónimo abstract base classes). Después, haremos que nuestra clase abstracta herede de una clase ABC que se incorpora en dicho módulo. Los métodos abstractos vendrán marcados con la anotación @abstractmethod, y tendrán como única línea de código la instrucción pass para dejar el código del método vacío, y delegar en las clases hija su implementación.

Veamos un ejemplo: supongamos que tenemos una clase abstracta Animal para almacenar datos genéricos de un animal, como su nombre y su número de patas. Tendremos un constructor, y un método abstracto hablar que se implementará en cada subclase que herede de dicha clase abstracta. Por ejemplo, crearemos una clase Perro, que heredará de Animal e implementará sus métodos abstractos, añadiendo características propias, como la raza del perro, u otros métodos.

from abc import ABC, abstractmethod

# Clase padre abstracta

class Animal:

    nombre = ""
    numeroPatas = 0
    
    def __init__(self, nombre, patas):
        self.nombre = nombre
        self.numeroPatas = patas
    
    # Método abstracto
    @abstractmethod
    def hablar(self):
        pass
    
    # Otros métodos

# Clase hija

class Perro(Animal):

    raza = ""

    def __init__(self, nombre, patas, raza):
        super().__init__(nombre, patas)
        self.raza = raza

    # Implementamos métodos abstractos
    def hablar(self):
        print("Guau, guau")

    # Otros métodos propios
(C) NachoIB, 2020 - contacto.lenguaj.es@gmail.com