Revista Informática

Clases, Atributos y Métodos

Publicado el 24 julio 2013 por Codehero @codeheroblog

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 y color, 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 propiedad numero_de_patas del objeto perro.

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 esquema nombre_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!


Volver a la Portada de Logo Paperblog