Métodos estáticos para Python

Los métodos estáticos en python no requieren la creación de objetos de una clase para ser llamados, se pueden llamar directamente en la clase.

Siempre se puede llamar a un método estático, pero es parte de una clase. Esto es diferente de un método de clase normal, que necesita la iniciación del objeto y se llama en el objeto.

Normalmente, llamar a un método de clase requiere que cree un objeto y llame al método: no es el caso con los métodos estáticos en python.

Introducción a métodos estáticos para python

En la programación orientada a objetos en python, se llama a un método en un objeto pero se define en una clase. No puede llamar directamente al método definido en la clase.

Un método no estático necesita que se inicialice un objeto:

class Spaceship(object):
    def start(self):
        print('start')

obj = Spaceship()
obj.start()

La palabra clave self en el método de inicio se refiere al objeto. Debido a que los métodos estáticos se pueden llamar sin la creación de objetos, no tienen una palabra clave propia.

Si intenta llamar al método directamente, Spaceship.start() arroja un error.

class Spaceship(object):
    def start(self):
        print('start')

Spaceship.start()

Debido a que no se crea un objeto, se genera un error. En la programación normal orientada a objetos, primero se debe crear un objeto a partir de una clase.

➜  ~ python3 example.py
Traceback (most recent call last):
  File "example.py", line 6, in <module>
    Spaceship.start()
    TypeError: start() missing 1 required positional argument: 'self'

Ejemplo de método estático en python

A veces hay una funcionalidad relacionada con una clase, pero que no necesita ningún objeto. ¿A qué objeto pertenecen las funciones de conversión de unidades (kilómetro a millas)?
En tal situación, es posible que desee crear un método estático.

Cree una clase y agregue un método. Debe definir explícitamente que es un método estático agregando el decorador @staticmethod.

En otras palabras: para convertir un método en un método estático, agregue el decorador @staticmethod.

El formato es entonces:

class MyClass:
    @staticmethod
    def myMethod():
        pass

Una vez que haya definido la clase, puede llamar a los métodos directamente.

class Spaceship:

    @staticmethod
    def start():
        print('start')

Spaceship.start()

Si ejecuta el programa, mostrará este resultado:

➜  ~ python3 example.py
start

Esto llama al método start() sin crear un objeto. A diferencia de los métodos de clase normales, no tienen acceso a las variables de los objetos.

Esto puede ser extraño, ya que parece contrario al concepto de programación orientada a objetos.

En la mayoría de los programas informáticos encontrará métodos de clase regulares. Los métodos estáticos se utilizan generalmente como ayudantes.

Te recomiendo mas entradas sobre ejercicios resueltos de programación orientada a objetos en python:

¿ Te pareció de utilidad este articulo Métodos estáticos para Python?
⬇️ Si compartes esta entrada otras personas podrán aprender.⬇️