Está en la página 1de 10
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 ano 22a, 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 tl 22a, 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 ta 22a, 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 tl 2129, 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 sno 22a, 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 tl 22a, 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 ta 22a, 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 tl 22a, 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 sno 22a, 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

También podría gustarte