en una el método de clase self
es la instancia de la clase a la que se llama el método. tenga en cuenta que self
no es una palabra clave en python simplemente un nombre convencional dado al primer argumento de un método.
vistazo a este ejemplo:
class A:
def foo(self):
print "I'm a.foo"
@staticmethod
def bar(s):
print s
a = A()
a.foo()
A.foo(a)
aquí a
es la instancia de la clase A
. llamando a.foo()
está invocando el método foo
de la instancia a
mientras A.foo(a)
foo
invocar el método en la clase A
pero pasando la instancia a
como primer argumento y son exactamente lo mismo (pero nunca usa la segunda forma).
staticmethod
es un decorador que le permite definir un método de clase como estático. esa función no es más un método y el primer argumento no es la instancia de la clase, pero es exactamente el primer argumento que ha pasado en esa función:
a.bar("i'm a static method")
i'm a static method
A.bar("i'm a static method too")
i'm a static method too
PS. No quiero molestarte pero esta es la base de Python, the python tutorial es un buen comienzo para los principiantes.