2 | ||
Editor: manduch
Time: 2010/07/22 15:29:30 GMT+2 |
||
Note: |
changed: - 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 ") více: http://www.ddj.com/184406073 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
>>> 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ě?
s použitím dekorátoru:
class S(object): @staticmethod def staticM(pp): print pp*2 S.staticM("nazdar ")
bez dekoratoru, zastarale:
class S(object): def staticM(pp): print pp*2 staticM=staticmethod(staticM) S.staticM("nazdar ")
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