Statické metody v Pythonu
Dotaz z konference
>>> Nevíte, jak udělat statickou metody v Pythonu, myslím metodu, >>> které není vázána k instanci, tedy self, ale jen ke třídě?
Odpověď 1
s použitím dekorátoru:
class S(object):
@staticmethod
def staticM(pp):
print pp*2
S.staticM("nazdar ")
Odpověď 2:
bez dekoratoru, zastarale:
class S(object):
def staticM(pp):
print pp*2
staticM=staticmethod(staticM)
S.staticM("nazdar ")
Odpoveď 3:
Ak použijes staticmethod, nemáš prístup k triedovému objektu, ak potrebuješ robiť s triedou a jej "statickými" členmi, použi classmethod:
class A(object):
a = 3
@staticmethod
def f():
print(a)
@classmethod
def g(cls):
print(cls.a)
A.f() # vyhodi chybu, nepozna premennu a
A.g() # vypíše hodnotu a, teda 3