Usando Clases en Python

in spanish •  6 years ago  (edited)

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!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Me da curiosidad que en Python los metodos o clases se abren o cierran de acuerdo a lo identado del texto, no como en los otros lenguajes que empiezan con un { } o que terminan con end

Hello! Your post has been resteemed and upvoted by @ilovecoding because we love coding! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On!

Reply !stop to disable the comment. Thanks!

python es genial, buen tuto