[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