Want to create interactive content? It’s easy in Genially!

Get started free

Programación Orientada a Objetos

Ximena Hernández Corona

Created on April 10, 2026

Start designing with a free template

Discover more than 1500 professional designs like these:

Company Dossier

Corporate Brand Book

Online Course Dossier

Professional Project Dossier

Basic Shapes Dossier

Color Shapes Dossier

Corporate Illustration Dossier

Transcript

Programación Orientada a Objetos

EQUIPO 7
Hernández Corona Ximena
ximeehrndz@ciencias.unam.mx
Ruvalcaba Bautista José Roberto
07ple.ri.14ai9@ciencias.unam.mx
Villegas Martínez Leonardo Ademir
leonardo.villegas@ciencias.unam.mx
Zamora Balderas Emilio Sebastián
emisebzb@ciencias.unam.mx

EMPEZAR

Índice

Herencia

Clases y objetos

04

01

Simple y multiple.
Atributos de instancia y de clase. Métodos.
Sobrescritura de métodos.
super()

Polimorfismo

Constructor __init__

05

02

Misma interfaz, distintas implementaciones.
Inicialización de instancias.
Duck typing.

Encapsulamiento

Métodos especiales

03

06

Convenciones: _protegido
__str__ __repr__ __len__ Operadores.
__privado
Propiedades con @property

01

clases y objetos

Atributos de instancia y de clase Métodos

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

01

02

03

Instanciación

Objetos

Clases

Es el proceso de crear un objeto a partir de una clase. Cada instancia es independiente.

Instancias individuales creadas a partir de una clase, con sus propios atributos únicos.

Es el "molde" o plantilla. Define qué propiedades y acciones tendrá un objeto del mundo real o ficticio, pero no contiene datos específicos.

En poo escribimos clases que representan cosas del mundo real o ficticio y creamos objetos basados en ellas.

¿Qué es un atributo?

Un atributo es una variable que pertenece a una clase o a un objeto. Guardan los datos asociados a ellos. Un objeto tiene dos tipos de atributos: atributos de datos y métodos.

02

01

Métodos

Atributos de datos

Funciones definidas dentro de la clase. Por consiguiente, pueden ser referenciadas por los objetos de dicha clase.

Definen el estado del objeto.

INSTANCIA

CLASE

DIFERENCIA

03

Encapsulamiento

Convenciones
Propiedades con @property

04

HERENCIA

Simple y múltiple
Sobrescritura de métodos
super()

Herencia

capacidad de reutilizar una clase extendiendo su funcionalidad.

Cuando la clase que quieres crear es una versión especializada de otra que ya existe, puedes usar la herencia. La clase derivada hereda los atributos y métodos de la clase base, y además puede definir los suyos propios.

05

POLIMORFISMO

Misma interfaz, distintas implementaciones
Duck typing

Polimorfismo

01

Definición

02

Misma interfaz, distintas implementaciones

03

Duck typing

06

métodos especiales

Métodos especiales

son métodos con doble guión bajo a cada lado (__método__)

Permiten que tus objetos se integren de forma natural con Python, es decir, que respondan a operaciones del lenguaje como print(), len(), o los operadores +, ==, etc.

01

02

04

03

Operadores

__len__

__repr__

__str__

Permiten usar operadores matemáticos y de comparación con tus objetos.

Se llama cuando usas len() sobre un objeto.

Se llama cuando usas repr() o cuando el objeto se muestra en la consola. Debe devolver una cadena que represente al objeto de forma técnica, idealmente que pueda recrearlo.

Se llama cuando usas print() o str() sobre un objeto. Debe devolver una cadena legible para el usuario.

Bibliografía

  1. J2logo. (2025, 12 julio). Programación orientada a objetos (POO) en Python. J2LOGO. https://j2logo.com/python/tutorial/programacion-orientada-a-objetos/#poo-atributos-clase-instancia
  2. Matthes. E. (2023). Curso intensivo de Python: Introducción práctica a la programación basada en proyectos (3a. ed.). Anaya Multimedia.

Actividades

01

Crea una clase llamada Estudiante que cumpla con las siguientes instrucciones:

  1. Define un atributo de clase total_estudiantes que inicie en 0 y se incremente cada vez que se crea un nuevo estudiante.
  2. Define los atributos de instancia nombre, carrera y __promedio. El promedio debe ser privado.
  3. Crea una propiedad con @property llamada promedio que devuelva el promedio actual.
  4. Crea un método actualizar_promedio(nuevo_promedio) que actualice el promedio. Si el valor es menor a 0 o mayor a 10, imprime un mensaje de error y no realices la actualización.
  5. Crea el método __str__ que devuelva el nombre, carrera y promedio del estudiante.
  6. Instancia dos objetos, actualiza sus promedios e imprime cada estudiante y el total de estudiantes creados.

02

Crea las clases Libro y Ebook que cumplan con las siguientes instrucciones:

  1. En la clase base Libro define los atributos de instancia autor y __titulo. Define un atributo de clase total_libros que se incremente con cada instancia creada.
  2. Crea una propiedad con @property llamada titulo que devuelva el título. Su setter no debe aceptar cadenas vacías.
  3. Define el método descripcion() que lance NotImplementedError.
  4. Define __str__ que devuelva título y autor del libro.
  5. Define __repr__ que devuelva una cadena que pueda recrear el objeto.
  6. Define __len__ que devuelva el número de páginas del libro. Agrega paginas como atributo de instancia.
  7. Define __eq__ que considere dos libros iguales si tienen el mismo título y autor.
  8. Crea la clase Ebook que herede de Libro. Usa super() en su __init__, agrega el atributo mb y sobreescribe descripcion() devolviendo título, autor y tamaño en MB.
  9. Crea una función mostrar(libro) que imprima el libro sin importar su tipo (duck typing).
  10. Instancia al menos un objeto de cada clase, recorre una lista con ambos usando mostrar() e imprime el total de libros creados y el número de páginas de cada uno.

ATRIBUTOS DE CLASE

Son variables que pertenecen a la clase en sí, no a ningún objeto en particular. Todos los objetos de esa clase comparten el mismo valor.

Se definen directamente en el cuerpo de la clase, fuera de cualquier método:

Características:

  • Se definen en el cuerpo de la clase, sin self
  • Son compartidos por todos los objetos
  • Se acceden con NombreClase.atributo o también con objeto.atributo
  • Útiles para contadores, constantes o valores comunes a todos los objetos

Ejemplo de objeto con la misma clase

Cuando se crea una variable de tipo Coche, realmente se está instanciando un objeto de dicha clase. En el siguiente ejemplo se crean dos objetos de tipo Coche:

c1 y c2 son objetos, objetos cuya clase es Coche. Ambos objetos pueden acelerar y frenar, porque su clase define estas operaciones y tienen un color, porque la clase Coche también define este dato. Lo que ocurre es que c1 es de color rojo, mientras que c2 es de color azul.

Sobrescritura de métodos

Si un método de la base no aplica a la derivada, se redefine con el mismo nombre. Python ignorará el de la base y ejecutará el de la derivada:

ATRIBUTOS DE INSTANCIA

Son variables que pertenecen a un objeto específico. Cada instancia tiene su propia copia con su propio valor, independiente de las demás.Se definen dentro del método __init__() usando self:

Características:

  • Se crean con self.nombre.atributo = valor
  • Cada objeto tiene sus propios valores.
  • Solo existen mientras existe el objeto.
  • Se acceden con objeto.atributo

Herencia simple

Se indica poniendo el nombre de la base entre paréntesis:

Método __init__()

Método conocido como el constructor de la clase y se invoca cada vez que se instancia un nuevo objeto.

Establece un primer parámetro especial que se suele llamar self, pero puede especificar otros parámetros siguiendo las mismas reglas que cualquier otra función.

DIFERENCIAS

__init__() en la clase derivada

Al crear una clase derivada, se llama al __init__() de la base para inicializar los atributos heredados:

Herencia múltiple

Una clase puede heredar más de una clase base. Python usa el orden MRO (Method Resolution Order) para resolver conflictos, busca los métodos de izquierda a derecha según el orden declarado:

Elementos de una clase

Para definir una clase en Python se utiliza la palabra reservada class.

¿Cómo instanciar una clase?

Para crear un objeto de una clase determinada, es decir, instanciar una clase, se usa el nombre de la clase y a continuación se añaden paréntesis (como si se llamara a una función).

obj = MiClase()

El código anterior crea una nueva instancia de la clase MiClase y asigna dicho objeto a la variable obj. Esto crea un objeto vacío, sin estado.

¿Qué pasa con las clases que deben o necesitan crear instancias de objetos con un estado inicial?

El bucle no sabe ni le importa qué tipo de forma es. Solo llama a area() y cada objeto responde con su propia implementación.

Varias clases comparten el mismo nombre de método (misma interfaz), pero cada una lo implementa de forma diferente:

Convenciones

En Python no existe un bloqueo real como en otros lenguajes, sino que se usan convenciones que indican cómo debe usarse cada atributo.

Público

Protegido

Privado

Property

Duck typing

Python no verifica el tipo de objeto, solo si tiene el método que se necesita. SI lo tiene, funciona:

A diferencia de otros lenguajes, los atributos de datos no necesitan ser declarados previamente. Un objeto los crea del mismo modo en que se crean las variables en Python, es decir, cuando les asigna un valor por primera vez.

El siguiente código es un ejemplo de ello: