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
- 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
- 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:
- Define un atributo de clase total_estudiantes que inicie en 0 y se incremente cada vez que se crea un nuevo estudiante.
- Define los atributos de instancia nombre, carrera y __promedio. El promedio debe ser privado.
- Crea una propiedad con @property llamada promedio que devuelva el promedio actual.
- 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.
- Crea el método __str__ que devuelva el nombre, carrera y promedio del estudiante.
- 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:
- 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.
- Crea una propiedad con @property llamada titulo que devuelva el título. Su setter no debe aceptar cadenas vacías.
- Define el método descripcion() que lance NotImplementedError.
- Define __str__ que devuelva título y autor del libro.
- Define __repr__ que devuelva una cadena que pueda recrear el objeto.
- Define __len__ que devuelva el número de páginas del libro. Agrega paginas como atributo de instancia.
- Define __eq__ que considere dos libros iguales si tienen el mismo título y autor.
- 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.
- Crea una función mostrar(libro) que imprima el libro sin importar su tipo (duck typing).
- 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:
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:
View
Company Dossier
View
Corporate Brand Book
View
Online Course Dossier
View
Professional Project Dossier
View
Basic Shapes Dossier
View
Color Shapes Dossier
View
Corporate Illustration Dossier
Explore all templates
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
Actividades
01
Crea una clase llamada Estudiante que cumpla con las siguientes instrucciones:
02
Crea las clases Libro y Ebook que cumplan con las siguientes instrucciones:
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:
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:
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: