La Programación Orientada a Objetos es un paradigma de programación que se basa en el concepto de “objetos”.
Estos son agrupaciones que representan entidades del mundo real con sus propias características (atributos) y comportamientos (métodos).
En POO, los objetos interactúan entre sí a través de mensajes, lo que permite modelar de manera más natural los sistemas complejos.
Si quieres aprender más sobre programación orientada a objetos, de dejo el enlace al Curso de Programación orientada a objetos.
Definición de una clase en Python
En Python, las clases se definen con la palabra clave class
seguida del nombre de la clase y dos puntos (:).
Una clase es una plantilla o un “molde” para crear objetos. Define las propiedades y comportamientos que tendrán los objetos que se creen a partir de ella.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def saludar(self):
print(f"Hola, mi nombre es {self.nombre} y tengo {self.edad} años.")
- El método
__init__
es un método especial llamado “constructor”, que se ejecuta automáticamente al crear un nuevo objeto de la clase. Aquí inicializamos los atributosnombre
yedad
. - El método
saludar
es un método de instancia que muestra un saludo con el nombre y edad de la persona.
Los atributos son variables que pertenecen a un objeto y que representan sus características o propiedades. Pueden ser de cualquier tipo de dato (como números, cadenas, listas, etc).
En el ejemplo anterior, nombre
y edad
son atributos del objeto persona
.
Los métodos son funciones que pertenecen a un objeto y que pueden operar sobre sus atributos (pueden realizar operaciones como modificar los valores de los atributos, o interactuar con otros objetos).
En el ejemplo, saludar
es un método del objeto persona
.
Creación de instancias
Una instancia es cada uno de los “ejemplares” que creamos a partir de una clase. Cada instancia tendrá sus tiene sus propios valores para los atributos definidos en la clase.
Para crear un objeto a partir de una clase, simplemente se llama al nombre de la clase seguido de paréntesis.
Por ejemplo, una vez que tenemos la clase Persona
, podemos crear instancias de esta clase así,
luis = Persona("Luis", 30)
En este caso, hemos creado un objeto luis
a partir de la clase Persona
, con los valores “Luis” para el atributo nombre
y 30 para el atributo edad
.
Acceso a atributo y métodos
Para acceder tanto a los atributos o métodos de una instancia, simplemente usamos el operador de acceso .
sobre la variable que contiene la instancia.
Por ejemplo así,
luis = Persona("Luis", 30)
ana = Persona("Ana", 25)
luis.edad = 35; # Cambiamos edad de Luis a 35
ana.edad = 28; # Cambiamos edad de ana a 28
luis.saludar() # Salida: Hola, mi nombre es Luis y tengo 35 años.
ana.saludar() # Salida: Hola, mi nombre es Ana y tengo 28 años.