sábado, 28 de julio de 2012

Metodos Estaticos (Python)

Los metodos estaticos son aquellos metodos que se pueden ejecutar aun cuando la clase no se a instanciado.

Es decir no es necesario hacer:

p = Persona()

para llamar por ejemplo al metodo obtenerTodas

se podria hacer simplemente

personas = Persona.obtenerTodas()

Veamos un ejemplo como para que quede todo mas claro.

class Persona(object): 
    nombre = "sin nombre" 
     
    def __init__(self): 
        self.nombre = "con nombre" 
     
    def getNombre(self): 
        return self.nombre

Para poder trabajar con esta clase, lo primero que habria que hacer es instanciarla.

p = Persona()
print p.getNombre()

lo cual mostraria el mensaje "con nombre" ya que al hacer Persona(), lo que hace es llamar al constructor de la clase persona, que a su vez le da el valor "con nombre" al atributo nombre.

La forma de declarar un metodo como estatico es la siguiente:

class Persona(object): 
    nombre = "sin nombre"

    def __init__(self): 
        self.nombre = "con nombre" 

    @staticmethod     
    def getNombreStatic(self): 
        return self.nombre

    @classmethod
    def getNombreClass(self): 
        return self.nombr

La diferencia, entre el método estático y el método de clase en Python, es que mientras el método estático no recibe por defecto ningún parámetro, el método de clase recibe como primer argumento el objeto classtype, esto es, la referencia a la declaración de la clase.

# El método estático, recibiendo la clase, retorna True
print Persona.getNombreStatic(OtraClase) 
  
# Mientras que el método de clase ya recibe la clase, y retorna True
print Persona.getNombreClass()

En definitiva no hace falta instanciar la clase persona para utilizar el metodo getNombre.. :)

Espero les sirva!

No hay comentarios:

Publicar un comentario