Clases en Python – Qué son y cómo usarlas

Último post del curso de Python básico. En el artículo anterior hablamos de lo que son las funciones y cómo utilizarlas en Python. Hoy hablaremos de la programación orientada a objetos y de cómo utilizar las clases en Python.

¿ Qué es la programación orientada a objetos ?

Antes de nada, debemos entender lo que es la programación orientada a objetos, conocida también como POO o OOP (Objected Oriented Programming) en inglés. Esto es un paradigma de la programación que se basa en el concepto de objetos.

¿ Qué es un objeto ?

A la hora de programar, existen variables y funciones. Podríamos entender un objeto como una variable, pero en este caso es compleja y puede almacenar a su vez, varias variables.

Imaginemos que queremos comprar un coche. Obviamente tienes clarísimo lo que es un coche, pero es importante que te sientes un momento conmigo y definamos bien lo que conforma un coche. Este coche tiene variables como:

  • La matrícula
  • La marca
  • Su velocidad máxima
  • Si es automático o manual

Ahora que entendemos lo que conforma un coche, debemos crear uno ¿no? Sé que no vas a crear un coche, sino a comprarlo, pero sígueme el rollo. Vamos a crear un coche de la marca Teslo (no quiero referirme a ninguna marca), con una matrícula X y digamos que es automático. Vamos a llamar a este coche Teslo road, ¿fácil no?

Mágicamente has entendido lo que es la programación orientada a objetos, ya que en este caso Teslo road es nuestro objeto. Podríamos crear otros objetos de tipo coche con otros valores y serían objetos independientes.

La definición de coche de la que hablé antes sería lo que se conoce como una clase. Y todos los objetos se crear a partir de clases.

¿ Cómo se definen las clases en Python ?

Ahora que eres un experto en POO vamos a ver cómo usarlo en Python.

class Coche:
    __init__(self):
        pass

Ahora que hemos definido la clase, una muy básica de momento, crearemos nuestro objeto.

teslo_road = Coche()

¡Tachán! Hemos creado nuestro primer objeto, pero seguro que te preguntas:

  • ¿Qué hace __init__?
  • ¿Qué significa self?
  • ¿Dónde están las variable que definí antes?

Vamos a resolverlas :) .

¿ Cómo funciona un constructor y la función __init__ ?

En la POO hay un concepto muy importante llamado constructor. Este constructor sirve para inicializar el objeto y se le puede añadir los parámetros que queramos. En nuestro caso nuestro constructor, es decir, la forma de crear nuestro objeto es Coche() y la forma de definirlo es con la palabra reservada __init__.

Nosotros hemos creado un constructor vacío, pero le puedes añadir todos los parámetros que quieras al igual que con las funciones.

En cuanto a la palabra self, lo que indica es que es una función que afecta solamente al objeto que creamos, por lo que estos objetos son independientes entre ellos.

Creando objetos en Python

Vamos a añadir las variables que definí antes a la clase.

class Coche:
    __init__(self, matricula, marca, velocidad_max, automatico):
        self.matricula = matricula
        self.marca = marca
        self.velocidad_max = velocidad_max
        self.automatico = automatico

Con esto indicamos que cuando inicialicemos el constructor, el objeto tendrá los valores que asignamos.

teslo_road = Coche('X', 'Teslo', 200, True)

Creando métodos en Python

Esto de definir clases y crear objetos está muy bien, pero tiene que poder servir para algo más ¿no? Exactamente. Con estas variables que definimos podemos hacer muchas cosas, y la forma de acceder a estas variables es con el uso de los métodos.

Un método es una función, pero que afecta directamente al objeto que hemos creado. Vamos a crear uno para entenderlo mejor. Para ello es necesario que añadamos alguna variable más para entender el estado del objeto.

class Coche:
    __init__(self, matricula, marca, velocidad_max, automatico):
        self.matricula = matricula
        self.marca = marca
        self.velocidad_max = velocidad_max
        self.automatico = automatico
        self.encendido = False
    arrancar(self):
        self.encendido = True
    apagar(self):
        self.encendido = False

Hemos creado dos métodos:

  • arrancar – Enciende el coche.
  • apagar – Apaga el coche.

Para saber el estado del coche, hemos creado la variable encendido.

teslo_road = Coche('X', 'Teslo', 200, True)
teslo_road.encender()
print(teslo_road.encendido)
teslo_road.apagar()
print(teslo_road.encendido)

Por supuesto, estos métodos se pueden complicar todo lo que quieras, te ánimo a que crees los que quieras para que practiques. ¿Por qué no creas un método acelerar que modifique la velocidad y tenga en cuenta la velocidad máxima?

Conclusiones

En este post has aprendido lo que son las clases y cómo crearlas y usarlas en Python. Espero que puedas sacarle todo su potencial. Si tienes cualquier pregunta, no dudes en dejarla en los comentarios.

¡Muchas gracias por haberte pasado por aquí!