Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe como crear módulos en Python, como importarlos en nuestros programas, y como usar los módulos que vienen incorporados en el lenguaje. Si eres nuevo en este curso, te recomiendo que le eches un vistazo al capítulo anterior para que te pongas en contexto (Capítulo 4)
Hoy, vamos a aprender a programar orientado a objetos, es decir, vamos a aprender a definir una clase, como definir sus atributos, como instanciarla y como generar la lógica necesaria para su completo funcionamiento.
¿Cómo definimos una clase?
Para definir una clase en Python, solo tenemos que hacer uso de la palabra clave ‘class’, seguida del nombre que le quieras asignar, seguido de un doble punto. Veamos un ejemplo:
class mascota:
Si observamos el ejemplo, podemos apreciar que creamos una clase llamada mascota.
Debemos resaltar dos puntos importantes a la hora de crear una clase en Python:
- Código identado – Todo el código que va poseer la clase debe estar identando, no puede estar a la misma altura que la declaración de la clase ya que el interprete levantará un error.
- Sin paréntesis – Cuando creamos una clase en Python no debemos colocar paréntesis después del nombre, al menos, que quisiéramos que la misma herede las características de otra clase.
Atributos de una clase
De nada nos sirve una clase sin atributos que la definan, es por eso que debemos asignarle a la clase mascota algunas propiedades. Veamos como:
class mascota: numero_de_patas = 0 color = “marrón”
Observemos que para definir los atributos, lo único que tenemos que hacer es declarar algunas variables dentro de la clase. En el ejemplo, declaramos
numero_de_patas
ycolor
, dos características de la mascota que quisiéramos guardar en el objeto. En cuanto a los atributos de una clase no existen limites, puedes usar cuantos tu quieras para cumplir con la definición de ese objeto.
Es importante saber que cuando definimos atributos tenemos que estar pendiente de:
- Asignarle siempre un valor – Siempre cuando declaremos un atributo en una clase en Python, debemos asignarle un valor por defecto ya que sino el interprete disparará una excepción.
- Nombre de atributos – Los nombres que le asignes a los atributos siempre deben ser los más sencillos y descriptivos posibles.
¿Cómo instanciar una clase?
Una declaración de una clase no es algo que uno pueda manipular directamente, es por eso que tenemos que instanciar un objeto de esa clase para así modificar los atributos que esta posea. Para instanciar una clase en Python, lo único que tenemos que hacer, es asignar a una variable el nombre de la clase seguida de paréntesis. Veamos como, siguiendo el ejemplo anterior:
class mascota: numero_de_patas = 0 color = “marrón” perro = mascota()
Ahora que ya sabemos instanciar una clase, ¿Cómo modificamos sus atributos?
Para referenciar una propiedad o atributo de un objeto en Python, lo único que tenemos que hacer es seguir la siguiente estructura nombre_variable + . + nombre_atributo
. Veamos como, dado el ejemplo anterior:
perro.numero_de_patas
Observemos que lo que estamos haciendo, es referenciar el valor contenido en el atributo
numero_de_patas
, es decir, estamos obteniendo el valor de la propiedadnumero_de_patas
del objetoperro
.
Nosotros podemos tratar es propiedad como si fuera una variable cualquiera, es por eso que podemos modificar el valor de ese atributo. Veamos como:
class mascota: numero_de_patas = 0 color = “marrón” perro = mascota() perro.numero_de_patas = 4 perro.color = “negro” print "El perro tiene “ + perro.numero_de_patas + “ patas y es de color “ + perro.color
Si ejecutamos el código anterior podemos observar que nos imprime lo siguiente:
El perro tiene 4 patas y es de color negro
Esto se debe a que modificamos las propiedades del objeto perro, ya que es un “perro” lo que estábamos definiendo, decidí asignarle 4 al número de patas con la siguiente expresión perro.numero_de_patas = 4
y negro al color de la mascota con la siguiente expresión perro.color = “negro”
.
¿Cómo creamos una lógica dentro de las clases?
Okey, hasta ahora hemos visto como usar clases y objetos como estructuras o contenedores de información, pero que pasa si queremos hacer tareas más complejas con su data, necesitamos una manera de introducir algo de lógica a esos objetos. Es en este momento cuando los métodos vienen a ayudarnos.
Los Métodos, son esencialmente funciones contenidas dentro de las clases. Para definir un método es exactamente la misma manera como definíamos una función en capítulos anteriores. La única diferencia es que esa función ahora pertenece a esa clase y para invocarla tenemos que llamar primero a la variable que posee la clase para después poder hacer uso de ese método en particular.
Para definir un método debemos usar la palabra clave def, luego, el nombre que le queramos dar al método, seguido de (self):
. Veamos como definir un método siguiendo los ejemplos anteriores:
class mascota: numero_de_patas = 0 color = “marrón” def dormir(self): print "zzz" perro = mascota()
Observemos que definimos un método dentro de la clase mascota llamado
dormir
. La función de este método es imprimir ”zzz” cada vez que lo invoquemos.
Para que un método funcione dentro de una clase es necesario cumplir con lo siguiente:
- Extra identado – Todo el bloque del código que vas a definir para ese método va tener que poseer un extra de identación para que el interprete de Python lo entienda.
- Siempre debe poseer un argumento “self” – Cada vez que declares un método en Python, vas a tener que agregarle el argumento self para que cuando ese método sea invocado, Python le pase el objeto instanciado y así pueda operar con los valores actuales de esa instancia. Si no incluyes ese argumento y ejecutas el código Python disparará una excepción y el programa se detendrá.
Si quieres pasarle argumentos creados por ti al método, lo haces como si pasarás múltiples argumentos a una función. Para mayor información sobre como pasar argumentos a una función, revisa el capítulo sobre funciones.
Ahora, ¿Cómo usamos ese método que acabamos de crear?. Sencillo, lo único que tenemos que hacer es instanciar una clase mascota y luego, a través de ella, invocar al método dormir. Veamos como:
class mascota: numero_de_patas = 0 color = “marrón” def dormir(self): print "zzz" perro = mascota() perro.dormir()
Observemos que al final del script invocamos al método dormir cuando ejecutamos esta instrucción
perro.dormir()
. Siempre para referenciar las funciones debemos usar el siguiente esquemanombre_variable + . + nombre_método + ()
. Es importante destacar que no debemos pasarle ningún atributo al método ya que Python lo hace por nosotros para satisfacer el argumento self, es decir, Python automáticamente le pasa como argumento la instancia de ese objeto al método que estemos invocando.
Si ejecutamos el código anterior, debemos observar que imprime el mensaje que escribimos en el método.
zzz
Conclusión
En esta lección, aprendimos a programar orientado a objetos, es decir, aprendimos como definir una clase, como definir sus atributos, como instanciarla y como generar la lógica necesaria para su completo funcionamiento. Si tienes alguna pregunta, yo estaré feliz de responderte en los comentarios, además espero que te unas y le eches un vistazo a todo el resto de este curso. Te espero la próxima semana!