Como escribir una clase en Python?

Clases son las bases de la programación orientada a objetos. Gracias a este reto, podrás entender como se utilizan las clases! En este post explico que es una clase en Python (con mis propias palabras y definición claro!) Y divido el código para que avancen con su aprendizaje.

Que son las clases en python?

Básicamente es una forma de representar los objeto de una forma “genérica” representando algún tipo de objeto. (Confuso no?) Quizas ayude con un ejemplo.

Veamos algo que todos estemos familiarizados… Angry Birds! (Por lo menos deberías de estarlo si tienes un smartphone alguna vez!).

Vayamos con los cerdos. En Angry Birds hay muchas diferentes tipos de cerdos a derrotar. Algunos son grandes, algunos pequeños. Algunos tienen sombreros que los hacen mas resistentes y algunos tienen cascos que los vuelven casí indestructibles. Sin embargo algo que tienen en común, es que todos son cerdos?

Si estuvieras programando el juego de Angry Birds, estarías manualmente programando este cerdo, crearías esta clase cerdo que se llamará cada vez que quieras crear un Cerdo. Cuando creas la clase Cerdo, especificarás los atributos que ese cerdo será creado, como por ejemplo, cuanta resistencia tendrá el cerdito.

Estoy simplificando pero la verdad es similar. La base “porcina” es esta. Un cerdo siempre tendrá una resistencia al iniciar, tu solo especificarás que tanto tendrá al crearlo.

Escribí una clase sobre una persona para conmemorar este reto. Lo explicaré par que haga sentido.

Una ‘Clase’ de persona

El código para este ejemplo está aquí.

Una persona es tan sencillo como se podría desear. Todos somos personas pero tenemos muchas diferencias, edad, altura, genero, color y así. Al final del día, todos somos personas — lo cual nos hace un gran ejemplo para una clase!

En el código a continuación defino a la persona:

class Person(object):

def __init__(self, name, age, height, weight, gender, job):
self.name
= name
self.age = age
self.height = height
self.weight = weight
self.gender = gender
self.job = job

  • La primera linea es sencilla. Estamos definiendo la clase “Person” y es un objeto.
  • __init__ es un método constante que dice que estamos creando un objeto de Person (usando la definición de clase Persona).

Nota la diferencia entre definir la clase y creando el objeto basado en la clase.

  •   En los paréntesis especificamos que queremos que el objeto Person tenga consigo. Self significa que es el objeto actual. Esto hace que el objeto Persona ha sido creado. (Lo veras en un segundo).
  • Entonces asignamos estos atributos para las variables por que estas contienen datos que un objeto de persona es creado. self.name por ejemplo, es asignado a “name” el cual es realmente un nombre de objeto en su creación.

Creando el objeto persona

En este punto, hemos definido una Persona. Una persona tendrá los siguientes atributos: edad, años, altura, peso, genero y trabajo. Ahora crearemos esa persona!

 

bob = Person(“Pedro”, 30, 180, 80, “Hombre”, “Gran programador”)

Al igual que pasar variables a la función, podemos pasar los atributos a la clase persona. Lo que estamos haciendo aquí es reasignando todos estos detalles (en orden especificado en la clase) al objeto bob.

 

Viva! Podemos usar la clase persona para crear a Pedro! Que raro no?!

Podemos hacer cosas locas como:

bob.age

30

Aquí es cuando las cosas de ‘self’ empiezan a cobrar sentido. Observa como la creación de la clase y los sustitutos de la palabra self con Pedro.

Creando funciones de la clase

Si queremos, podemos también crear algunas funciones especificas para que esta clase que podamos llamar a la misma cosa. Aquí hay otras formas de conseguirle a Pedro un trabajo (esto es especificado en la clase):

def get_job(self):
return self.job

Lo podemos llamar como esto:

Pedro.get_job()
Gran Programador

Esta es la misma respuesta que poner Pedro.job.

Divirtiéndonos con funciones de clases

Lo que algunas veces es interesante hacer? Aquí es donde podemos venir con la idea que el calcular la masa corporal de una persona BMI (Indice de masa corporal).

def bmi(self):

return (self.weight / ((self.height / 100) ** 2))

BMI se usa usando esta ecuación previa: peso (kgs) dividido por la altura en metros cuadrados.

Una vez que un objeto de Persona han estado creado, podremos entonces checar que están en BMI es tal como los siguientes:

bob.bmi()

24.7

Bastante bien no?

Donde podrás usar una clase?

Diría que quieres usarlas tanto como uses con datos repetidos.

Por ejemplo, si estas trabajando con datos de una base de datos de películas puedes hacer que la clase de Película ya que conoceremos que cada película tendrá el mismo atributo: Título, duración, año, director, y así.

Las puedes usar donde sea realmente.

Considera un sistema de quejas de una empresa. Una queja estará estructurada de la misma manera cada vez: ID, Cliente, Servicio afectado, fecha, y texto de la queja.

La mejor parte es la de crear tus propias clases de funciones que puedas hacer cualquier tipo de cosas interesantes con los datos. Imagina una función de queja.email(). Esta podría ser para los correos de las quejas para que los departamentos correctos si esta haya sido identificada legítimamente!

Conclusión

Clases toman un poco acostumbrarse a estas, especialmente cuando empiezas a jugar con subclases. (Reto de código 20!) pero son muy importantes y muy necesarias para entrar en la programación orientada a objetos!

Mi recomendación es para abrir el editor y programar de forma rápida ahora:

Crear una clase de carro con los atributos: Fabricante, Modelo, Año de creación, Tipo de combustible, Millaje, Odómetro. Entonces crea algunos carros y juega con sus datos! Pónlo en la pantalla, y finalmente en una base de datos, como sea. Solo programa algo!

Manten la calma y programa en Python!

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
(0 total tokens earned)
Loading...

Responses