Blog
Método estático en Python
En las clases u objetos de Python existe una gran variedad de decoradores, y lo que hacen es convertir un método de una clase y es por eso que reciben el nombre de método. En este caso hablaremos del método estático, este método lo que haces es permitirnos utilizar el método de una clase sin necesidad de tener una instancia de la clase y está constituido por dos decoradores uno llamado @staticmethod
y @classmethod
Para entender un poco mejor este concepto vamos a verlo en código:
class HelloWorld(object): saludo = 'Hola mundo' def __init__(self): self.saludo = 'No hay saludo' def saludoStaticmethod(self): return self.saludo def saludoClassmethod(self): return "Hello World"
Así es como se ve una clase en Python sin métodos estáticos, ahora para entender que hacen y la diferencia de cada uno, lo que haremos será llamar a ambos métodos de la clase de la siguiente manera:
class HelloWorld(object): saludo = 'Hola mundo' def __init__(self): self.saludo = 'No hay saludo' def saludoStaticmethod(self): return self.saludo def saludoClassmethod(self): return self.saludo instancia = HelloWorld() # Realizamos una instancia para poder llamar a los métodos print(instancia.saludoStaticmethod()) print(instancia.saludoClassmethod())
Al ejecutar este código se nos imprimirá dos veces la cadena de texto “No hay saludo”, esto es porque ambos retornan lo mismo. Pero, si te fijas la clase contiene una variable estática llamada saludo que contiene un “Hola mundo” y es aquí donde entran los métodos estáticos veamos:
class HelloWorld(object): saludo = 'Hola mundo' def __init__(self): self.saludo = 'No hay saludo' @staticmethod def saludoStaticmethod(self): return self.saludo @classmethod def saludoClassmethod(self): return self.saludo print(HelloWorld.saludoStaticmethod(HelloWorld)) print(HelloWorld.saludoClassmethod())
Si te fijas en el código, ya no necesito realizar una instancia de la clase para llamar a los métodos. Pero una diferencia es que el @staticmethod necesita recibir en el método, el nombre de la clase ya que de lo contrario arrojará error, por otro lado el @classmethod hace lo mismo que el anterior, solo que este decorados ya le dice a Python que los métodos que este decorados con este, automáticamente deben recibir el nombre de la clase.
Al ejecutar el código obtendremos el como resultado lo que se encuentra dentro de la variable estática saludo, y esto es todo lo que se puede aportar sobre estos dos decoradores aunque Python mantiene muchos otros, pero estos son los más usados.
➡ Te invitamos a realizar nuestro Curso de Python Gratis para Principiantes: