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