Python: OOP

Post con pequeños fragmentos de código donde puedo visualizar de forma rápida como gestiona Python la programción orientada a objetos y todas sus características como la herencia, el polimorfismo o las interfaces.

Atributos:

Métodos:

args y kwargs

Son la mánera de pasar argumentos a un método sin definir ni sus nombres ni su cantidad. Se suele utilizar en el constructor de la clase.

Herencia simple, sobrecarga y extensión

En Python a diferencia de otros lenguajes como PHP o Java (aunque si lo hagan a través de interfaces), se permite la herencia múltiple. Conceptualmente es extraño e incluso surgen problemas como que las clases padre compartan mismos atributos o métodos, ya que sólo se puede heredad de una, y esto lo marcará el orden en el que hagamos la inicialización de los padres. Puedes usar el dunder __mro__ (Method Resolution Order) para averiguar el orden de herencia los padres. Ejm: print(mi_hijo.__mro__)

Encapsulación (o como ocultar atributos y métodos al exterior):

Los setters son una buena opción cuando queremos hacer comprobaciones o acciones extra a parte de la asignación.

Interfaces y clases abstractas

Una interfaz es una clase donde se definen todos los métodos que deberán implementar las clases que la implementen. No se implementan, sólo se definen. Se puede decir que todos los métodos de una interfaz son abstractos, ya que definimos método abstracto a un método vacio.

Una clase abstracta está compuesta por atributos y métodos, algunos abstractos y otros completos, de la cual otras clases podrán extender. El uso de interfaces y clases abstractas en Python es algo difuso, ya que se entremezcla.

Comentarios

Entradas populares de este blog

Django REST framework

Envío de checkboxes o selector multiple por AJAX con jQuery

Django: relaciones polimórficas