[python] Classmethod
Jan Janech
devel na atlas.sk
Čtvrtek Listopad 9 15:14:43 CET 2006
superman wrote:
> 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.
Ako prvy parameter dostanes triedu.Je to vhodne koli dedicnosti. Napr.
~~~~~~~~~~~~~~~ <IPYTHON SHELL> ~~~~~~~~~~~~~~~~~~~~
In [1]: class Trieda1:
...: @classmethod
...: def akoze_konstruktor(cls):
...: print "Konstruujem triedu '%s'"%cls.__name__
...: return cls()
...:
...:
In [2]: class Trieda2(Trieda1):
...: pass
...:
In [3]: Trieda1.akoze_konstruktor()
Konstruujem triedu 'Trieda1'
Out[3]: <__main__.Trieda1 instance at 0xb78a72ec>
In [4]: Trieda2.akoze_konstruktor()
Konstruujem triedu 'Trieda2'
Out[4]: <__main__.Trieda2 instance at 0xb789ebac>
~~~~~~~~~~~~~~~ </IPYTHON SHELL> ~~~~~~~~~~~~~~~~~~~
okrem toho prebera aj vlastnost statickej metody, ze ju mozete zavolat
aj na triede, aj na instancii triedy a dosiahnete to iste. Teda
Trieda1.akoze_konstruktor() a Trieda1().akoze_konstruktor() vykonaju
totoznu akciu
>
> 3) Statická metoda nedostane jako první parametr nic (tedy kromě toho co
> si explicitně zvolím jako paramtry).
>
> Miloslav Ponkrác
Další informace o konferenci Python