Atributos y métodos - POO Python - Capítulo 2


Los atributos son las propiedades de un objeto, estos atributos se representan con variables de cualquier tipo de dato de Python, incluidos otros objetos.
Te recomiendo que los nombres de estas variables sean lo más descriptivos posible y que no utilices nombres cómo "x" e "i", por ejemplo.

El objeto pantalón tiene de momento dos atributos, tipo y color. Si a estos les cambiamos el nombre por "x" e "y", seguirá funcionando, pero no veremos tan claro lo que representa cada atributo.
Le añado el precio al pantalón y en lugar de precio, le digo que "z" igual al precio. No es para nada intuitivo y cuando haya muchos atributos no vamos a saber ni qué está pasando en nuestro propio programa.

Pasemos a ver un ejemplo orientado a los videojuegos con los ninjas del capítulo anterior.
Para el personaje protagonista, le he empezado a dar atributos, el primero son los puntos de vida y le he dado el nombre de "HP" en inglés, porque no es lo mismo health points que hijo ****. Ya he soltado el chiste malo, podemos continuar .
Por supuesto, si consideras que HP no queda lo suficientemente claro, dale de nombre puntos_vida o algo por el estilo, eso ya queda a tu juicio. Yo lo pongo con este nombre, ya que es muy característico de muchos videojuegos indicar este atributo con el nombre HP. Tampoco te quemes a pensar nombres, hazlo fácil e intuitivo, eso es todo.

Pantalones

El segundo atributo podría ser resistencia, esta se iría gastando con ciertas acciones y cuando el personaje tenga la resistencia a 0, estará cansado y sus habilidades se verían reducidas, por ejemplo haciendo que no pudiera correr hasta que recuperara la resistencia.

El tercer atributo será XP, el nivel de experiencia del personaje, que inicialmente será de 1, pero puede ir cambiando.

Como métodos, podríamos tener baja_salud, que se ejecutaría en caso de que atacasen al personaje y le disminuiría los puntos de vida.
También se podría tener otro método para bajar la resistencia y que se ejecute mientras el personaje salta o corre. Otro para ir subiendo niveles de experiencia, uno para poder disparar o atacar de alguna forma,etc.

Todo esto son conceptos para que veáis algunos ejemplos más prácticos, ya que puedo soltaros la teoría, pero si no entendéis lo que se puede hacer con lo que os voy enseñando, creo yo que no se aprende correctamente.
No hace falta que entiendas todo, por ejemplo, el self, todavía no lo he explicado, vamos a ir paso por paso, pero así es como quedaría un ejemplo de todo lo que te acabo de contar plasmado en una clase:

Código

class NinjaPrincipal:
    HP = 100
    resistencia = 50
    XP = 1

    def game_over(self):
        print('Game over')


ninja = NinjaPrincipal()

print(ninja.HP)

ninja.HP = 0

if ninja.HP == 0:
    ninja.game_over()

Resultado

100
Game over

Lo que nos devuelve la consola, no son más que los dos print() que hay en el código. No te preocupes por entender todo esto en este capítulo, lo iré explicando en los próximos capítulos.

Lo que tiene esta clase son tres atributos (HP, resistencia y XP). También hay un método llamado game_over() que sería ejecutado de forma parecida a la de una función, ya que los métodos son en realidad funciones que pertenecen a una clase, nada más.

En esta línea "ninja = NinjaPrincipal()" se instancia el objeto (se crea) llamado ninja.

Con el "print(ninja.HP)" lo que se consigue es imprimir el valor del atributo HP del objeto ninja.

En la siguiente línea lo que se hace es asignar un nuevo valor al atributo HP, pero solo para el objeto llamado ninja, no a la clase. Por lo que de tener más objetos, esta asignación solo afectaría al que se lo asignemos y no a todos.

En el if del final, se especifica una condición para este objeto. Si la vida de ninja queda a cero, entonces llama al método game_over(), que este imprime el mensaje de game over.


Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.