Clases abstractas en Python: una guía para principiantes

Una clase abstracta es un modelo para clases relacionadas. No se puede crear una instancia, pero solo se puede acceder a él a través de la herencia. Se requiere una subclase que hereda una clase abstracta para implementar sus métodos abstractos. De lo contrario, el compilador marcará un error.

Los métodos abstractos son métodos sin implementación. Una clase abstracta puede tener métodos abstractos o métodos concretos (normales).

Python no admite directamente métodos abstractos, pero puede acceder a ellos a través del módulo abc (clase base abstracta).

Usando el módulo abc en Python

Para definir una clase abstracta en Python, debe importar el módulo abc.

Vea el ejemplo a continuación:

 from abc import ABC
class AbstractClassName(ABC):
pass

Observe la palabra clave pass . Esta palabra clave se utiliza para reemplazar el código vacío. Si lo deja fuera, se producirá un error de compilación.

Relacionado: ¿Julia hará una oferta por el trono de Python?

Las definiciones de clases, las definiciones de métodos, los bucles y las sentencias if esperan implementaciones de código. Por lo tanto, dejarlos fuera da un error de compilación. Para evitar esto, use pass para sustituir el código vacío.

Para definir un método abstracto en Python, use el decorador @abstractmethod :

 from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass

En este punto, sería bueno mencionar que, a diferencia de Java, los métodos abstractos en Python pueden tener una implementación. Se puede acceder a esta implementación en el método de anulación usando el método super () .

 import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()

Es interesante notar que puede definir un constructor en una clase abstracta.

En la línea 9, puede observar que @ abc.abstractmethod se ha utilizado como decorador del método abstracto. Esta es otra forma de hacerlo que no sea la forma anterior. Observe también que la línea 1 es más corta ( import abc ) que la importación de la línea 1 anterior que utilizó.

Todo es cuestión de elección. Sin embargo, muchos pueden encontrar el segundo método más corto.

Manejo de excepciones en Python

Tenga en cuenta que no hay forma de capturar errores en el ejemplo de código dado anteriormente. Los errores ocurren la mayoría de las veces, y tener una forma confiable de conseguirlos puede cambiar las reglas del juego.

Estos eventos que interrumpen el flujo normal del programa se denominan "excepciones" y su gestión se denomina "gestión de excepciones". Lo siguiente en su lista de lectura de Python debería ser el manejo de excepciones.