[python] Classmethod
superman
feed na centrum.cz
Čtvrtek Listopad 9 11:47:27 CET 2006
Mnohokrát děkuji
Chápu to tedy správně, že:
1) Normální metoda dostane jako první parametr instanci třídy.
2) Classmethod dostane jako první parametr pouze třídu, tedy snad pouze
nějaký odkaz na něco souvisejícího s názvem třídy.
3) Statická metoda nedostane jako první parametr nic (tedy kromě toho co
si explicitně zvolím jako paramtry).
Miloslav Ponkrác
Jan Janech napsal(a):
> In [1]: class aaa:
> ...: @staticmethod
> ...: def stat(): # staticka metoda
> ...: print "Staticka"
> ...: def inst(self): # metoda instancie
> ...: print "Metoda instancie, dostala", self, "ako parameter"
> ...: @classmethod
> ...: def clsm(cls): # metoda triedy
> ...: print "Metoda triedy, dostala", cls, "ako parameter"
> ...:
>
> In [2]: aaa.stat()
> Staticka
>
> In [3]: aaa().inst()
> Metoda instancie, dostala <__main__.aaa instance at 0xb78a49ac> ako
> parameter
>
> In [4]: aaa.clsm()
> Metoda triedy, dostala __main__.aaa ako parameter
>
>
> superman wrote:
>
>>>V classmethod se oproti staticmethod předává navíc jako první parametr
>>>metody třída.
>>>Jan Matejka
Další informace o konferenci Python