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 _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
