22a, 21:35 Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, ele
Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, etc
Introducci6n a la Programacién Orientada a Objetos en Python
La Programacién Orientada a Objetos en Python es una forma de escribir programas que se centran en objetos, en lugar de
todas las operaciones que se realizan en esos objetos. Es una forma popular de programacién porque facilta la escritura de
programas complejos y mantiene la legiblidad del cédigo a largo plazo.
En su nicleo, la programacién orientada a objetos se basa en la idea de que “tado es un objeto". Cada objeto tiene una serie
de caracteristicas (0 propiedades) y una serie de comportamientos (o métodos) que puede realizar. Por ejemplo, un objeto
'perro" podria tener las propiedades “color” y “edad y los métodos “ladrar” y “correr
En Python, los objetos se definen mediante la creacién de una clase, Una clase es esencielmente un plano o un molde para la
‘reacién de objetos. Por ejemplo, una clase “perro” podria defini todas las propiedades y métodos que queremos que tengan
los objetos “perro”
La sintaxis bdsica de una clase en Python se ve ast:
class Perro
def
def ladrar!
"iGuaut*
def correr!
"Corriendo ... "
En este ejemplo, hemos creado una clase iamada Perro que tiene dos propiedades( color y edad )y dos métodos
( ladrar y correr ). La definicién de la clase comienza con la palabra clave class_, seguida del nombre de la clase
yluege dos puntos. Luego, cada propiedad y método se define como una funcién dentro de la clase.
La primera funcién ena clase, __init___, es un método especial que se llama cuando se crea un nuevo objeto de la clase.
Toma dos argumentos de entrada ( self , que se reflere al objeto que se esté creando,y color y edad ,quese
definen como propiedades del objeto) y asigna esos valores a las propiedades del objeto( self.color y self.edad ).
Losmétodos ladrar y correr son funciones simples que imprimen mensajes a la consola
Una vez que hemos definide nuestra clase, podemos crear un nuevo objeto perro de la siguiente manera:
. marrén
Esto crea un nuevo objeto perro conuncolorde marrén yuna edad de 3 afios, y lo asigna a la variable “mi_perro’
“ La programacion orientada a objetos puede ser un tema muy complejo y avanzadlo. Pero, en su forma bésica, se trata
simplemente de definir clases y objetos que tengan propiedades y métodos. Con esta introduccién a la programacién
orientada a objetos en Python, ests bien encaminado para crear programas mas avanzados y poderasos en el futuro.
Creacién de Clases en Python y su relacién con la Programacién Orientada a Objetos
Cuando comeneé a aprender programacién orlentada a objetos en Python, una de as primeras cosas que tuve que entender
{ue la creacién de clases. Las clases son la estructura principal en la programacién orientada a objetos y son esenciales para
crear objelos y apiear métodos sobre ellos.
Las clases en Python se crean utilizando la palabra reservada ‘class’, seguido por el nombre de la clase y dos puntos. Luego, se
definen los métodos y propiedades de la clase. Por ejemplo, si queremos crear una clase llamada “Perro”, podemos hacerlo de
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metodos-propiadades-ocfigsc ta
ano22a, 21:35 Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, ele
la siguiente manera:
class Perro
def
def saludar:
"jHola, soy un perro Llamado” "y tengo* : "afios!"
En este ejemplo, hemos creado la clase Perro con tres propiedades: nombre, raza y edad. También hemos creado el
método saludar , que simplemente imprime una cadena de texto que incluye el nombre y edad del perro.
Una vez creada la clase, podemos Instanciar objetos de la misma. Para hacerlo, simplemente llamamos al nombre de la clase
sseguido de paréntesis:
“Firulais", "Chihuahua", 5
En este elemplo, hemos creado un objeto delaclase Perro llamado mi_perro ,conelnombre Firulais , raza
Chihuahua yedad 5. Luego liamamos al métode saludar sobre este objeto, lo que imprimira en la consola la cadena
de texto definida en 6! método.
La programacién orientada a objetos os ull porque permite encapsular datos y comportamientos relacionados en un solo objeto.
En el ejemplo anterior, encapsulamos el nombre, raza y edad del perro en un objeto mi_perro y también definimos un
‘comportamiento (el método saludar_) que funciona especiticamente con este objeto.
La creacion de clases es fundamental en la programacién orientada a objetos en Python. Las clases nos permiten
lo que nos permite escribir cédigo més organizado y facil de
encapsular datos y comportamientos relacionados en objet
mantener
Métodos en Python y su uso dentro de las Clases
En Python, los métedos son funciones definidas dentro de las clases y se uliizan para realizar acciones o realizar una area
eespecifica en un abjeto de esa clase.
‘Cuando se crea una instancia de una clase, los métodos se pueden llamar en la instancia del objeto utiizando la sintaxis
‘objeto.metodo() . Ademas, como los métodos estan definidos dentro de una clase, tienen acceso a todas las
propledades y otros métodos de esa clase,
La sintaxis de la definicién de un método es similar a la sintaxis de la definicién de una funcién en Python, excepto que se define
dentro de una clase y requiere el parametro self . Self se refiere ala instancia del objeto en el que se esta llamando el
método.
\Veamos un ejamplo para entondetto mejor:
2no
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl22a, 21:35 PProgramacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, etc
class Coche
def
= False
def arrancar:
= True
def apagar’
= False
En este ejemplo, creamos la clase Coche conlas propiedades marca , modelo , ano y en_marcha .Ademés,
definimos dos métodos, arrancar y apagar , queestablecen el valorde en_marcha en True y False
respectivamente.
‘Ahora, podemos crear una instancia de esta clase y llamar a sus métodos:
- Ford", "Fiesta", 2010
En este ejemplo, cteamos una instancia de la clase Coche ylaasignamos ala variable mi_coche . Luego, llamamos al
método arrancar eneste objeto, que establece su valor en_marcha en True. Finalmente, lamamos al método
apagar , que establece su valor en_marcha en False.
Es importante destacar que los métodos en Python también pueden tomar argumentos ademas de self . En ese caso, estos
argumentos se pasan como pardmettos al método cuando se llama,
“ 11os métodos son una parte fundamental de la programacién orientada a objetos en Python, Nos permiten realizar
fleas en los objetos de una clase y ayudan a crear una interfaz coherente y cohesiva para trabajar con estos
‘complejos
acciones espe
objetos. Con un entendimiento sélido de cémo funcionan los métodos, podemos empezar a construir objetos mé
y tiles en nuestros proyectos de Python,
Encapsulamiento y Abstraccién de datos en Python
Uno de los principales conceptos en la Programacién Orientada a Objetos (POO) es el encapsulamiento y abstraccién de datos.
En Python, esto se logra a través de la utlizacién de clases y métodos.
El encapsulamiento permite ocultar los detalles intemos de una clase, de manera que solo los métodos que se expongan
puedan acceder y modificar los atributos. De esta forma, se garantiza que los objetos se mantengan en un estado consistent y
se evita que se modifiquen sin control,
Para implementar el encapsulamiento en Python, se utiliza la convencién de nombres de atributos y métodos privados y
ppUblcos. Los atributos y métodos privados se nombran comenzando con doble guién bajo (__), mientras que los publicos no
llevan prefjo.
Por ejemplo:
ano
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metodos-propiadades-ocfigsc ta22a, 21:35 PProgramacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, etc
class Persona
def
def get_nombre'
return
def set_nonbre!
En este ejemplo, los atributos nombre y edad son privados, ya que se nombran con doble guién bajo. Los métodos
ge
nombre y set_nombre son piblices, porque no llevan pref.
La abstraccién, por su parte, es el proceso de identificar y separar las caracteristicas esenciales e importantes de un objeto, y
‘omitr aquellas que no son relevantes. Esto ayuda a simpliicar el madelo y hace que sea mas facil de entender.
En Python, la abstraccién se logra mediante la creacién de una interfaz clara y concisa para interactuar con los objetos. Esto
significa que se definen métodos que representan acciones especificas que se pueden realizar con los objetos, sin entrar en
deialles sobre cémo se implementan estas acciones.
Por ejemplo:
class Coche
def
def arrancar:
"EL coche ha arrancado."
def frenar!
EL coche ha frenado
En este ejemplo, se define la clase Coche conlosatributos marca y modelo ,asicomolosmétodos arrancar y
Frenar . Estos dos métodos representan acciones que se pueden realizar con un coche, pero no especiican cémo se
implementan.
“ 1 encapsulamiento y Ia abstraccién son conceptos fundamentales de la POO en Python. El primero permite ocultar los
detalles internos de una clase y mantener los objetos en un estado consistente, mientras que el segundo simplifica el modelo
al enfocarse en las earacteristicas esenciales ¢ importantes de los objetos,
Herencia y Polimorfismo en la Programacién Orientada a Objetos en Python
La herencia y el polimorfisme son conceptos importantes en la programacién orientada a objetos en Python, Una de las
ventajas de la herencia es la posibilidad de crear nuevas clases a partir de una clase base, lo que puede ahorrar tiempo y
reducit la complejidad del cédigo. Ademés, el polimorfismo permite ullizar un objeto de una clase hija como si fuera de la clase
padre, lo que aumenta la flexibiidad del programa,
Para utilizar la herencia en Python, se utliza la palabra clave class seguida del nombre de la clase hija y entre paréntesis
el nombre de la clase padre. Por ejemplo, si queremos crear una clase Vehiculo yunaclase Automovil queherede
de la primera, podemos hacerlo de la siguiente forma:
ano
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl2129, 21:35 Programacién Orientada a Objelos en Python: Clases, Métodos, Propiedades, etc
class Vehiculo
def _init_(self, marca, modelo
selfemarca = marca
self.modelo = modelo
def imprimir_datos(s
nu(f*Marca: {self.marca}\nModelo: {sel*.modelo}")
class Automovil(Vehicul
def _init_(self, marca, m indrada)
indrada = cilind
def imprimir_datos(se
-imprimir_dato
f"Cilindrada: {
Eneste ejemplo, la clase Vehiculo tiene dos atributos ( marca y modelo )yunmétodo( imprimir datos )que
los muestra por pantalla.La clase Automovil heredade Vehiculo yafade unatributo( cilindrada ) y también
un método( imprimir_datos_) que primero muestra los datos del vehiculo y luego la cilindrada. En este método,utlizamos
la palabra clave super() parallamar al método inprimir_datos dela clase padre.
EI polimorfismo, por su parte, nos permite utlizar un objeto de una clase hija como si fuera de la clase padre. Por ejemplo, si
creamos un objeto dela clase Automovil , pademos utlizarlo como si fuera un objeto de la clase Vehiculo
culo = Vehiculo(*Ford", "Fiesta"
automovil = Automovil(*Renault", “Mégane”, “1.6'
for v in vehicuto
print(
En este ejemplo, creamos un objeto delaclase Vehiculo yotrode laclase Automovil . Luego, los utlizamos para
llamar almétodo imprimir_datos de cada clase y los almacenamos en una lista, Finalmente, recorremos la lista y
utiizamos el método imprimir_datos de cada objeto,
“ La herencia y el polimorfismo son conceptos importantes en Ia programacién orientada a objetos en Python ya que
permiten la creacién de nuevas clases a partir de clases base y la utilizacién de objetos hijos como si fueran objetos padres.
Esto aumenta la flexibilidad y reduce la complejidad del codigo.
Métodos Magicos en Python y su uso en las Clases
En programacién orientada a objetos, los métodos mégicos son funciones especiales que permriten definir comportamientos
cespecificos para las clases. Estos métodos se llaman “magicos” porque su nombre comienza y termina con dos guiones bajos (
)
Por ejemplo, el método __init___ se.utiiza para inicializar objetos y es invocado automaticamente cuando se crea una
instancia de la clase. Otro ejemplo popular es ol método __str___ , que se utllza para representar el objeto en forma de
hitps/lapuntes deipython/programacion-orientada-a-objetos-en-pythor-clases-metods-propiadades-etcligsc.tab=0 sno22a, 21:35 PProgramacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, etc
‘cadena de texto y permite que se pueda imprimir en la consola de forma legible.
Un ejemplo sencillo para iustrar su uso es el siguiente
class Persona
def
def
return f"Mi nombre es {self. +
. "Juan"
En este caso, al crear una instancia de la clase Persona se lama automaticamente al método __init___para asignar
el nombre del objeto. Posteriormente, al imprimir el objeto utlizando print(p) se llama automaticamente al método
__str___ que retoma una representacién en texto de la instancia,
tro ejemplo tiles el métado _Len___, que permite determinar la longitud de un objeto. Para utilizar este método, la clase
debe implementario y retomar un valor entero representando la cantidad de elementos en la instancia:
class Lista
def
def
return
- 1,2,3,4,5
# Inprime 5
En este ejemplo, la clase Lista implementa elmétodo __len___ para retornar la cantidad de elementos en la lista que
‘se le pasé como argumento al crearla instancia. Luego, se utliza la funcién Len() para obtener el resultado.
Existen muchos otros métodos magicos que pueden ser les, como __add__ (para sumar objetos), _eq__ (para
compararigualdad), __\t__ (para comparar menor que), entre otras. Sin embargo, es importante tener en cuenta que no
siempre es necesario utlizar estos métodos y que su uso variara dependiendo de cada caso especifico.
“ Los métodos mégicos son una herramienta poderosa que permite definir comportamientos espectficos para las clases
en Python, Utilizarlos de forma adecuada puede hacer que nuestro cédigo sea més facil de entender y mantener.
Propiedades y sus Beneficios en la Programacién Orientada a Objetos en Python
En la Programacién Orientada a Objetos en Python, las Propiedades tienen un papel fundamental en la construccién de
clases y objetos. Una propiedad se detine como un atributo de un objeto que proporciona su estado actual. Ademas, también
pueden ser combinadas con métodos para darle mas complejidad a los objetos.
Uno de los mayores beneficios de las propiedades es que permiten controlar el acceso a sus valores. Esto significa que
podemos elegir qué valores pueden ser escritos y leidos por otros abjetos. Por ejemplo, podemos crear una propiedad que
simplemente pueda ser leida pero que no pueda ser escrta desde fuera del objeto.
Un ejemplo con eédigo podria ser el siguiente:
eno
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl22a, 21:35 Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, ele
class Persona
def
property
def nonbre|
return
En este caso, la propiedad nombre solo puede ser leida desde fuera del abjeto Persona. Si quisieramas escribir el valor,
tendriamos que definir un método setter:
anombre.setter
def nombre|
De esta forma, podemos controlar la forma en que se accede y se modifica el estado interno del objeto Persona.
‘Otro beneficio importante de las propiedades es que nos permiten definir comportamientos personalizados. Por ejemplo,
podemos crear una propiedad que recoja datos en otto lugar ylos calcule an tiempo real sin tener que ser almacenados en una
Variable interna, Esto puede ser especialmente itil para calcular propiedades que cambian con frecuencia y que no tienen,
sentido almacenar en memoria
class Rectangulo
def
aproperty
def areal
return self. *
En este caso, la propiedad area calcula el rea del rectangulo en tiempo real en funcién de la base y la altura. Esto significa que
si cambiamos cualquiera de estos aiributos, la propiedad area se actualizara automaticamente.
“ Las propiedades en la Programaci6n Orientada a Objetos en Python nos permiten controlar el acceso a los
atributos de nuestros objetos, personalizar su comportamiento, o incluso ealeular valores en tiempo real. Su uso puede ser
‘my stil para simplifiar el cédigo y aumentar su mantenibilidad, asf que no dudes en experimentar con ellas en tus
proximos proyectos,
Decoradores en Python y su uso con las Clases
Los decoradores en Python son una caracteristica interesante que permite a los desarrolladores madificar la funcionalidad de
luna funcién o clase sin cambiar su definicin. Los decoradores son, en esencia, funciones que toman otra funcién como
argumento y devuelven una funcién modificada.
En Python, los decoradores se utiizan a menudo con las clases para agregar funcionalidad a sus métodos. Por ejemplo,
‘supongamos que queremos registrar la cantidad de veces que se llama a un método de una clase. Pademos crear un decorador
que agregue esta funcionalidad de forma transparent
70
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metodos-propiadades-ocfigsc ta22a, 21:35 Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, ele
def contador!
=o
def wrapper(#: a
nonlocal
FEL metodo { } ha sido Lamado {count} veces.
return - +
return
class MiClase
contador
def mi_metodo:
Soy un método de ejenplo.
En este ejemplo, el decorador contador toma una funcién como argumento (en este caso, el método mi_metodo dela
clase MiClase )y devuelve una nueva funcién que envuelve la original. La funcién envuelta( wrapper) registra la
cantidad de veces que se llama al método y luego invoca la funcién original
Aldecorar el método con acontador , lafuncién mi_metodo es reemplazada por la funcién envuelta, Ahora, cada vez
que se llamaa_mi_metodo , su implomentacién original se ejecuta, junto con el cédigo adicional agregado por el decorador.
Los decoradores también pueden utlizarse para imponer restricciones en los argumentos de una funcién método. Por ejemplo,
podemos crear un decorador que asegure que un método sélo sea llamado con cierto tipo de argumentos:
def decorador:
def wrapper(* +
for arg in
if not
raise TypeError(f"El argumento {arg} no es de tipo {tipo}.
return * +
return
return
class MiClase
@asegurar_tipo
def sumar_enteros
return a +
En este ejemplo, el decorador asegurar_tipo toma un tipo de argumento como argumento y devuelve otro decorador que
‘envuelve la funcién original, La funcién envuelta ( wrapper) comprueba si todos los argumentos son del tipo especificado y,
sinolo son, genera un TypeError . Sitodos los argumentos son del tipo correcto, se invoca la funci6n original
@asegurar_tipo(int) , estamos asegurando que sélo se pueden pasar
Aldecorar el método sumar_enteros con
con argumentos que no sean enteros, se generaré
argumentos enteros a la funci6n, Siintentamos llamar a sumar_enteros
herramienta en Python que permiten a los desarrolladores modificar la funeionalidad
“ Los decoradores son una poderosa
de una funcién o clase de forma transparente. Al utilizar los decoradores con las clases, podemos agregar funcionalidad
adicional a nuestros métodos de manera sencilla y eficiente.
Manejo de Excepciones en la Programacién Orientada a Objetos en Python
Como desarrolladores en Python, sabemos que la Programacién Orientada a Objetos (POO) es una de las principales funciones
utilzadas en este lenguaje de programacién. En la POO, uliizamos las clases, los métodos y las propiedades para crear objetos
y hacer que nuestros programas sean mas eficientes y faciles de leer.
ano
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl22a, 21:35 PProgramacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, etc
‘Sin embargo, también debemos tener en cuenta el manejo de excepciones en la POO de Python. Cuando se trabaja en
pprogramacién, las excepciones son errores que pueden ocurir en el cédigo y que, sino se manejan correctamente, pueden
hhacer que el programa se bloques o fall.
En la POO, estos errores pueden ser manejados utiizando el comando try-except, Este comando intentara ejecutar el cédigo
dentro del bloque try. Si ocurre una excepcién, el programa se moverd hacia el bloque except, donde se manejara la excepcién,
Por ejemplo, supongamos que estamos trabajando con una clase que divide dos nimeros. Podemos manejar la excepcién de la
division por cero de la siguiente manera:
class Division
def
def division:
try
return
except ZeroDivisionError
No se puede dividir por cero.”
return None
En este ejemplo, si intentamos dividir un niimero por cero, se capturard la excepcién ZeroDivisionError y se imprimira un
‘mensaje en la pantalla que indica que no se puede diviir por cero, También se devuelve un valor nulo para evitar que el
programa se bloquee.
tro ejemplo que podemos utilizar es cuando no se encuentra un archivo en el sistema, Para manejar esta excepcién, podemos
utiizar el siguiente cédigo:
class Archivo
def
def Leer_archivo!
try
with . as
return
except FileNotFoundError
FEL archive (
return None
} no se encuentra en el sistema.
En este caso, siel archivo no se encuentra en el sistema, se capturara la excepcién FileNotFoundError y se imprimira un
‘mensaje en la pantalla indicando que el archivo no existe, También se devuelve un valor nulo para evitar que el programa falle
“ i manejo de excepciones en la POO de Python es una habilidad erucial para cualquier desarrollador. Es importante
identificar las excepeiones que pueden ocurrir en el eédigo y manejarlas correctamente utilizando el comand try-except. De
esta manera, se pueden evitar errores y hacer que el programa sea més robusto y confiable.
Aplicaciones Practicas de la Programacién Orientada a Objetos en Python
La Programacién Oriontada a Objetos (POO) on Python consiste en disefiar programas a través de objetos que interactian
centre si. Esto significa que los objetos tienen propiedades y métodos que se pueden utlizar en el desarrollo de diversas
aplicaciones.
Una de las aplicaciones mas tiles de la POO en Python es la creacién de clases. Las clases permiten crear objetos que tienen
caracter'sticas comunes, lo que puede resultar muy itil en la creacion de programas y aplicaciones complejas.
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl sno22a, 21:35 Programacién Orientada a Objetos en Python: Clases, Métodos, Propiedades, ele
Por ejemplo, si estamos desarrollando un programa que maneja informacién de empleados de una empresa, podemos crear una
clase llamada "Empleado” que tenga propiedades como "nombre", “apellido’, ‘cargo’, “salario’, entre otras. Luego podemos
crear objetos de esta clase para cada empleado de la empresa y asignarles valores especificos a cada propiedad. De esta
‘manera, podemos manejar la informacién de cada empleado de manera eficiente.
Los métodos también son una parte importante de la POO en Python. Los métodos son funciones que estén asociadas a
‘objetos y que se pueden utilizar para realizar acciones especificas.
Por ejemplo, si seguimos con el ejemplo de la clase “Empleado”, podemos crear un método llamado “calcular_salario_neto” que
‘se encargue de calcular el salario neto de un empleado en funcién de su salario bruto y otras deducciones.
En Python, los atributos son las variables que componen la estructura de un objeto, Por lo tanto, uno de los beneficios précticos
de la POO en Python es la capacidad de trabajar con miitiples objetos que tienen diferentes atributos, lo que seria dificil de
lograr con otros paradigmas de programacién.
tra aplicacién practica de la POO en Python es la cteacién de herencia entre clases. La herencia permite crear nuevas clases
a partir de clases existentes, heredando sus atributos y métodos. Esto puede ayudar en el desarrollo de programas mas
eficientes y organizados.
Por ejemplo, si tenemos una clase “Vehiculo”, podemos crear una nueva clase llamada "Automévil que herede los atributos y
métodos de la clase "Vehiculo”. Esto nos permite crear una estructura de clases mas compleja y especializada.
‘Ademas, la POO en Python es muy itl para la creacién de Interfaces gréficas de usuario (GUI). Las GUI son un componente
importante para muchas aplicaciones modernas, y la POO nos permite crear interfaces gréficas de usuario personalizadas y
eficientes.
“ La POO en Python nos permite erear programas y aplicaciones més organizados, eficientes y adaptables. Las clases,
:métodos y atributos nos permiten trabajar con miiltiples objetos de manera sistemstica, yla herencia nos permite crear
estructuras de clases més complejas. Ademis, Ia POO en Python es muy itil para a creacion de interfaces grificas de
usuario. Por lo tanto, si estés interesado en el desarrollo de programas y aplicaciones, aprender sobre POO en Python es
esencial
ron0
hitps/Iapuntes.delpython/programacion-oientada-a-objetos-en-pythor-clases-metods-propiadades-ocligsc tl