| 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