in un il metodo di classe self
è l'istanza della classe in cui viene richiamato il metodo. attenzione che self
non è una parola chiave in python solo un nome convenzionale dato al primo argomento di un metodo.
un'occhiata a questo esempio:
class A:
def foo(self):
print "I'm a.foo"
@staticmethod
def bar(s):
print s
a = A()
a.foo()
A.foo(a)
qui a
è l'istanza della classe A
. chiamando a.foo()
dell'istanza a
mentre A.foo(a)
invoca il metodo foo
nella classe A
ma passando l'istanza a
come primo argomento e sono esattamente la stessa cosa (ma non si utilizza mai il secondo modulo).
staticmethod
è un decoratore che consente di definire un metodo di classe come statico. che la funzione non è più un metodo e il primo argomento non è l'istanza della classe, ma è esattamente il primo argomento è stato passato a questa funzione:
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. Non voglio disturbarti ma queste sono le basi di Python, the python tutorial è un buon inizio per i principianti.
fonte
2009-12-26 11:19:02