Introducción a la programación orientada a objetos#

En términos técnicos, todo en Python es un objeto [Vanderplas, 2016].1 Incluso los tipos de datos básicos como enteros, cadenas y listas son objetos en sí mismos y tienen sus propios métodos y propiedades.

Las clases también son objetos y sirven para crear objetos. Tal vez parezca un poco complicado en este momento, pero con la práctica se hará más clara esta idea.

En términos de la Programación Orientada a Objetos, podemos entender un objeto como una entidad que tiene un estado y un comportamiento. El estado de un objeto se refiere a sus propiedades y el comportamiento a sus métodos. Por ejemplo, un objeto de tipo Coche puede tener como propiedades el color, la marca, el modelo, etc. y como métodos el arrancar, el frenar, el girar, etc.

Otro aspecto importante de entender, antes de iniciar nuestro proceso de programación, es la idea de instanciación. Cuando creamos un objeto a partir de una clase, decimos que estamos instanciando un objeto de esa clase. Por ejemplo, podemos instanciar un objeto de la clase Coche y asignarlo a una variable:

class Coche:
    def __init__(self, color, marca, modelo):
        self.color = color
        self.marca = marca
        self.modelo = modelo

mi_coche = Coche("rojo", "Renault", "Megane")

El objeto mi_coche es una instancia de la clase Coche y tiene como propiedades el color, la marca y el modelo. Podemos acceder a ellas de la siguiente forma:

print(mi_coche.color)
print(mi_coche.marca)
print(mi_coche.modelo)
rojo
Renault
Megane

Podríamos verbalizarlo de la siguiente manera:

Una clase es una plantilla para la creación de objetos. Cuando creamos un objeto a partir de una clase, decimos que estamos instanciando un objeto de esa clase.

Lo que es relevante de entender en este momento, es que las clases nos ayudan a pensar como programadores. En lugar de pensar en un problema como un conjunto de variables y funciones, podemos pensar en él como un conjunto de objetos que interactúan entre sí. Esto nos permite abstraer el problema y centrarnos en los aspectos más importantes. Lo anterior implica que debamos diseñar antes de escribir código y en este sentido pasamos de un enfoque imperativo (una sucesión de instrucciones) a un enfoque orientado a objetos.

Notas#


1

Puedes consultar la cita y algunos ejemplos en el siguiente enlace: https://jakevdp.github.io/WhirlwindTourOfPython/03-semantics-variables.html#Everything-Is-an-Object