Blog
Es bien sabido que Python es un lenguaje de programación multiparadigma. Esto quiere decir que soporta distintos paradigmas de programación entre los cuales se encuentra la programación orientada a objetos.
La programación orientada a objetos (POO) se en
foca en la creación y definición de objetos y sus características en los programas para resolver los problemas. Dichos objetos, dependiendo de lo que se necesite, pueden ser agrupados y tratados como variables de un mismo tipo y se les definen métodos y funciones.
Para trabajar con objetos, es necesario saber que son.
Objetos
Los objetos son la abstracción de los datos en el sistema. Todos los datos en un programa son representados como objetos o relaciones entre objetos. Cada objeto tiene una identidad, un tipo y un valor.
Tenemos que la identidad es el nombre del objeto, la forma con la cual nos referimos a dicho objeto. Se puede pensar que es la dirección o el apuntador del objeto en la memoria. La identidad de un objeto es inmutable.
El tipo del objeto determina las operaciones y el conjunto de valores que admite como valor.
El valor de un objeto será el dato o los datos que están contenidos en dicho objeto.
Para definir todo esto referente a los objetos, Python utiliza la creación de clases.
Clases
Son los tipos de los objetos que serán creados. Funcionan de forma similar a los tipos de las variables (int, string) según lo que le sea definido. Proveen una forma de empaquetar datos y funcionalidad juntos.
Al crear una nueva clase, estamos creando un nuevo tipo de objeto, permitiendo crear instancias de dicho tipo. Cada instancia de la clase puede tener atributos adjuntos para mantener su estado y métodos o funciones (definidos en la clase) para modificar su estado.
Las instancias de dichas clases, serán los objetos.
Atributos, Métodos y Funciones de un objeto
Cuando pensamos en objetos, nos vienen a la mente cosas que tienen atributos y son utilizadas para algún propósito (Ej: una silla, con soporte, de color azul utilizada en un comedor).
Los atributos del objeto serán las características que definamos para. Los métodos y funciones serán las tareas o utilidades del objeto.
Supongamos lo siguiente:
- Tenemos una clase: Vehiculos
- Una instancia de la clase puede ser: Sedán
- Sus atributos podrían ser:
- Color: Plata
- Marca: Ford
- Modelo: Fiesta
- Sus métodos:
-
- Encender()
- Acelerar()
- Apagar()
Dichos atributos y métodos se definen en la clase y, al momento de crear el objeto, se precisan los argumentos para definir cuales atributos posee el objeto.
Creación de Clases en Python
Para comenzar a definir la clase en Python, tenemos la palabra reservada class. Luego de class viene el nombre de la clase, seguida por el nombre de la clase padre entre paréntesis, de la cual heredará características. Si no se indica una clase padre, tomará por defecto la clase Object (que es una clase predefinida en el lenguaje). Luego vienen dos puntos (como en los condicionales if-else o en los ciclos for-while) y dentro del bloque de código estarán los métodos y atributos de la clase.
Supongamos que el mundo es un programa. En él, existen muchos objetos, entre los cuales se podrían encontrar los humanos. Vamos a ver como podría ser una clase para los humanos.
class Humanos(object): # Comienzo de la definición # Atributos básicos nombre = None edad = 0 genero = None cumpleaños = None
Tenemos que esa es la base de la clase de los humanos. En un principio, es un humano que no ha nacido, por lo que no tiene ningún atributo definido.
En la POO, al definir una clase, también se definen métodos constructores. Un método constructor es la función que genera o crea el objeto con los atributos que le sean especificados. Volviendo a nuestra clase Humanos, el constructor de la clase se ejecuta en el momento en el que nace un nuevo humano y le asigna los datos que reciba. Esto es:
class Humanos(object): # Atributos básicos nombre = None edad = 0 genero = None cumpleaños = None # Constructor de la clase def __init__(self,nombre:str,genero:str,cumpleaños:str): self.nombre = nombre self.genero = genero self.cumpleaños = cumpleaños
Tenemos detalles nuevos.
- En Python, los constructores de las clases llevan por nombre __init__. Los constructores se ejecutan al definir alguna instancia u objeto de la clase.
- El constructor recibe varios argumentos, entre los cuales se encuentra self. self indica que se están trabajando con todos los atributos y métodos de la clase.
- Al definir las variables self.nombre, self.genero y self.cumpleaños, se está definiendo el valor de los atributos definidos al principio de la clase
Hasta ahora, ya pueden nacer humanos nuevos (en nuestro programa). Pero este humano no tiene definida ninguna acción que pueda hacer. Agreguemos un método que puede ser bastante útil:
class Humanos(object): # Atributos básicos nombre = None edad = 0 genero = None cumpleaños = None # Constructor de la clase def __init__(self,nombre:str,genero:str,cumpleaños:str): self.nombre = nombre self.genero = genero self.cumpleaños = cumpleaños def presentacion(self): print(f"Hola, mi nombre es {self.nombre}") print(f"Tengo {self.edad} años")
Este nuevo método hace la presentación de la persona diciendo su nombre y su edad.
Hasta ahora, no hay forma de que la edad de la persona sea llevada de forma adecuada. Vamos a ingresar un método que maneje la edad según la fecha del día.
class Humanos(object): # Atributos básicos nombre = None edad = 0 genero = None cumpleaños = None # Constructor de la clase def __init__(self,nombre:str,genero:str,cumpleaños:str): self.nombre = nombre self.genero = genero self.cumpleaños = cumpleaños def presentacion(self): print(f"Hola, mi nombre es {self.nombre}") print(f"Tengo {self.edad} años") def cumpleaños(self,fecha): if fecha == self.cumpleaños: self.edad += 1 else: pass
Este nuevo método verifica si la fecha del día es igual a la fecha de cumpleaños de la persona. Si es así, entonces le suma 1 a la edad de la persona.
Esta es la manera con la que se pueden agregar distintos métodos y funciones a nuestra clase.
Luego de tener la clase creada, comenzaremos a crear los objetos
Creación de Objetos
Una vez que tenemos creada nuestra clase con todos sus atributos y métodos, tendremos que crear los objetos de nuestro programa. Como fue mencionado al principio, los objetos serán instancias de la clase que creamos.
La creación o instanciación de objetos a partir de la clase es sencilla. Tenemos que el constructor de la clase se ejecuta al crear un objeto, por lo tanto, al crear el objeto, tenemos que pasarle los argumentos que recibe el constructor. Esto es:
>>> obj1 = Humanos("Miguel","Masculino","18-02")
obj1 será un humano, llamado Miguel, de genero Masculino, cuyo cumpleaños es el 18-02.
De igual manera se pueden crear todos los que queramos.
>>> obj2 = Humanos("Isabella","Femenino","01-08") >>> obj3 = Humanos("Carmen",Femenino","24-10")
Tenemos ahora a obj2 y obj3, Isabella y Margarita, ambas de genero Femenino cuyos cumpleaños son el 01-08 y el 24-10 respectivamente.
Si queremos que alguno se presente, tenemos que llamar el método de presentación que definimos en la clase. Esto es:
>>> obj1.presentacion() Hola, mi nombre es Miguel Tengo 0 años
Como el objeto fue creado recientemente, su edad es de 0 años.
Para cambiar el valor de alguna de las características de nuestros objetos (en este caso queremos cambiar la edad), se tiene que cambiar el valor de la variable adecuada en el objeto.
>>> obj1.edad = 22 >>> obj1.presentacion() Hola, mi nombre es Miguel Tengo 22 años
Ahora la edad de Miguel es de 22 años.
La sintaxis para modificar las variables de los objetos es:
objeto.variable = *valor nuevo*
➡ Te invitamos a realizar el Curso de Python para Principiantes: