Uso de staticmethod en Python

logo python

En otros artículos he hablado de decoradores, en este, me referiré al uso de staticmethod en Python y sus características.

Todos sabemos que Python está orientado a objetos y que las clases son la base de su programación, por eso el uso de decoradores es una ayuda importante en el manejo de estas.

staticmethod es un decorador que nos permite usar una funcion dentro de una clase sin que esta reciba argumentos.

Otros artículos sobre decoradores

Su forma de escribirlo, es colocando una arroba delante

@staticmethod

Este decorador permite llamar a una clase, aunque esta aun no haya sido convertida en un objeto.

Veamos un ejemplo, que ya he empleado al hablar de decoradores antes:

class boxeador(object):
    def __init__(self):
        pass
    @staticmethod
    def esquina():
        print("Has tenido suerte, tu esquina aun no tiene color")

def main():
    b = boxeador()
    b = b.esquina()
    

if __name__ == '__main__':
    main()

Como ven hemos podido llamar a esquina() sin que esta tenga ningún parámetro.

 Si eliminamos el decorador recibiríamos este error:

TypeError                                 Traceback (most recent call last)
<ipython-input-22-0a10128b3e82> in <module>
     12 
     13 if __name__ == '__main__':
---> 14     main()

<ipython-input-22-0a10128b3e82> in main()
      8 def main():
      9     b = boxeador()
---> 10     b = b.esquina()
     11 
     12 

TypeError: esquina() takes 0 positional arguments but 1 was given
'

Esto nos está indicando un error de tipo, que nos dice que a pesar de que la función esquina no tiene argumentos (parámetros),  la hemos llamado como si lo tuviera.

Y hasta aquí, como siempre espero que sirva de ayuda a alguien.

Un saludo

Entrena duro y en silencio, que el éxito sea tu grito

D