Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Introducción a la Programación Orientada a Objetos en Python

La Programación Orientada a Objetos (OOP) es un paradigma de programación que te permite representar conceptos del mundo real en términos de objetos: cosas que tienen características específicas (datos) y comportamientos (acciones).

Piensa en un objeto como una entidad autónoma en tu programa que agrupa datos y acciones en un solo lugar—como un smartphone que posees: tiene datos (marca, modelo, nivel de batería) y puede realizar acciones (tomar una foto, hacer una llamada, reproducir música). En el código, esos datos se almacenan en atributos (por ejemplo, battery_level), y las acciones son métodos (por ejemplo, take_photo()); juntos forman una unidad coherente que puedes crear, configurar y usar.

La clase es el plano (el diseño del teléfono), y un objeto es una instancia real e individual construida a partir de ese plano (tu teléfono específico con su batería y fotos actuales). Cada objeto mantiene su propio estado, por lo que dos objetos de la misma clase pueden tener valores diferentes al mismo tiempo, y se comunican llamando los métodos de cada uno en lugar de manipular directamente los detalles internos—esta idea se llama encapsulación, y te ayuda a organizar el código, reducir errores y razonar sobre el comportamiento.

Cuando creas un objeto, Python normalmente ejecuta init para establecer su estado inicial; después, le pides al objeto que haga cosas llamando a sus métodos, que pueden leer o actualizar sus atributos según sea necesario. Si has creado un juego, imagina un Jugador con salud y posición que puede moverse() y saltar(); en una app web, un Usuario con nombre y password_hash que puede autenticar() y actualizar_perfil().

Eso es todo lo que es un objeto: datos + comportamiento, viviendo juntos, creados a partir de una clase y listos para funcionar para ti.

En Python, todo es un objeto. Esto significa que el código se escribe alrededor de los objetos y sus interacciones, haciendo que la OOP sea una parte fundamental de Python y una característica principal en librerías y frameworks populares como Django, Flask e incluso muchos motores de juego.

En esta lección, exploraremos los conceptos básicos de OOP en Python y aprenderemos a usarlos para crear nuestros propios objetos.


Clases y Objetos

La OOP en Python se basa en clases y objetos:

  • Una clase es un plano o definición para un tipo de objeto. Describe qué propiedades (llamadas atributos) y qué comportamientos (llamados métodos) tendrá ese tipo de objeto.
  • Un objeto es una instancia de una clase—es como una versión real del plano, con datos reales almacenados en sus atributos.

1.1. Creando una Clase

Para crear una clase en Python, usa la palabra clave class, seguida del nombre de la clase y dos puntos.

Ejemplo:

class Person:
    pass

Aquí hemos creado una clase llamada Person. La sentencia pass es un marcador de posición—indica a Python “no hacer nada aquí” hasta que agreguemos código real más adelante.

CONSEJO: Por convención, los nombres de clases usan PascalCase (cada palabra empieza con letra mayúscula).

Atributos y Métodos

Una clase puede tener:

  • Atributos — variables que contienen información sobre el objeto.
  • Métodos — funciones que definen acciones que el objeto puede realizar.

2.1. Añadiendo Atributos

Para configurar atributos al crear un objeto, los definimos dentro de un método especial llamado __init__ (se pronuncia “dunder init”—abreviatura de double underscore init).

__init__ se ejecuta automáticamente cada vez que creas un nuevo objeto a partir de la clase. Sirve para inicializar los atributos del objeto con valores iniciales.

Ejemplo:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

Lo que sucede aquí:

  • El primer parámetro, self, es una referencia al objeto específico que se está creando.
  • Los otros parámetros (name, age) son valores que se pasan al crear el objeto.
  • self.name y self.age son atributos de instancia que almacenan los datos dentro del objeto.

IMPORTANTE: self debe ser siempre el primer parámetro en los métodos de instancia—esto te permite acceder a los atributos y métodos propios del objeto.

2.2. Añadiendo Métodos

Los métodos son funciones que pertenecen a una clase. Generalmente realizan acciones que usan o modifican los atributos del objeto.

Ejemplo:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hola, mi nombre es {self.name} y tengo {self.age} años.")

Aquí:

  • Hemos añadido un método llamado greet.
  • Usa los atributos del objeto (self.name y self.age) para mostrar un mensaje personalizado.

Creando y Usando Objetos

Una vez que defines una clase, puedes crear objetos a partir de ella tal como llamarías a una función—pero usando el nombre de la clase.

Ejemplo:

person1 = Person("Alice", 30)
person1.greet()

Salida:

Hola, mi nombre es Alice y tengo 30 años.

Resumen

En esta lección aprendiste:

  • La diferencia entre clases y objetos.
  • Cómo usar __init__ para configurar atributos al crear objetos.
  • Cómo definir métodos que permiten a los objetos realizar acciones.

Esta es la base de la OOP en Python. A continuación, ampliaremos esto explorando la herencia—una forma de crear nuevas clases que se basan en otras ya existentes.