logo cosasdedevs
Métodos de clase y métodos estáticos en Python

Métodos de clase y métodos estáticos en Python



My Profile
Jun 01, 2022

👋 Hello! En el tutorial de esta semana quiero profundizar en la programación orientada a objetos en Python y para ello vamos a ver que son los métodos de clase y métodos estáticos y cómo utilizarlos. ¡Empezamos!

Antes de empezar 🤔

Para este tutorial necesitarás tener conocimientos de programación orientada a objetos en Python. Si no tienes muy claro como funciona, te recomiendo que primero leas este tutorial en el que te explico como funciona desde 0 👇

Programación Orientada a Objetos (POO) en Python

Métodos de clase en Python

Los métodos de clase son métodos que se usan para realizar operaciones en el ámbito de clase y NO al generar una instancia. Para crear un método de clase, debemos usar el decorador @classmethod y en el método debemos añadir como primer parámetro cls.

Al igual que pasaba con self, podemos emplear cualquier nombre, aunque por convención se recomienda cls que viene de class. Este parámetro se emplea para acceder a los atributos de la clase y a otros métodos, siempre y cuando también sean métodos de clase o estáticos.

Puede que no quede muy claro, así que voy te dejo un ejemplo y te lo explico:

class Perro:
    peso = 30

    def __init__(self, peso):
        self.peso = peso

    @classmethod
    def get_peso_promedio(cls):
        return cls.peso

labrador = Perro(25)
print(f'El peso de un perro labrador es {labrador.peso} kilos')
# El peso de un perro labrador es 25 kilos
print(f'El peso promedio de un perro es {Perro.get_peso_promedio()} kilos')
# El peso promedio de un perro es 30 kilos

En este ejemplo, he creado una clase Perro que tiene un atributo llamado peso con un valor por defecto, pero que al crear una instancia lo reasignamos con el valor enviado por parámetro.

Después generamos el método de clase get_peso_promedio que retornará el atributo peso. Pues bien, si creamos una instancia de Perro e imprimo el valor de peso, podemos ver que recuperamos el valor al crear la instancia.

Sin embargo, al acceder al método de clase, obtendremos siempre el valor por defecto asignado a peso.

Como puedes ver, la diferencia entre uno y otro es que gracias al método de clase podemos acceder al valor inicial del atributo.

Métodos estáticos en Python

Los métodos estáticos pertenecen a la clase, aunque no dependen ni de la clase ni de una instancia de esta. Por lo tanto, en este caso no necesitaremos ningún parámetro principal como sucede con los métodos normales o los de clase. Este tipo de métodos se utilizan normalmente cuando están ligados de alguna forma a la clase, por lo que no vale la pena tenerlos en un módulo separado de esta.

Para declarar un método estático, solo necesitamos usar el decorador @staticmethod y nuestro método estático.

Un ejemplo podría ser una clase que se encargase de realizar operaciones matemáticas sencillas:

class Math:

    @staticmethod
    def sumar(num1, num2):
        return num1 + num2

    @staticmethod
    def restar(num1, num2):
        return num1 - num2

    @staticmethod
    def multiplicar(num1, num2):
        return num1 * num2

    @staticmethod
    def dividir(num1, num2):
        return num1 / num2

print(Math.sumar(5, 7))
print(Math.restar(9, 3))
print(Math.multiplicar(15, 9))
print(Math.dividir(10, 2))

Como puedes ver, en ningún caso necesitamos crear una instancia de la clase y si tuviéramos métodos de otro tipo en la clase, podríamos acceder a estos sin problema.

Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.

Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.

Nos leemos 👋.

186 vistas

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para mejorar la experiencia del usuario a través de su navegación. Si pulsas entendido aceptas su uso. Ver política de cookies.