superman > pepr > > Stejně je ale otázka, jestli opravdu chci používat > > statické metody třídy. V podstatě jsou elegantní jen > > v případě, kdy používají proměnné stejné třídy. > > A zavádění proměnných třídy v Pythonu asi taky > > není moc časté. [...] > > [...] Uvědomte si, že statická metoda patří do > prostoru jmen třídy a její potomek jí může předefinovat. > Jediným rozdílem je, že statická metoda nezná konkrétní > instanci třídy. Takže klidně můžete udělat toto: > > class uhel: > @staticmethod > def static_str_na_radiany(s): > return blablabla; > > def __add__(self, other): > if isinstance(other, basestring): > return uhel(self.__radians +\ > self.static_str_na_radiany(other)); > elseif: > # a tak dale > > class zemepisny_uhel(uhel): > def static_str_na_radiany(s): > # tato metoda umi konvertovat zemepisny > # uhel zapsany ve stringu na radiany > # na rozdil od stejne metody v predkovi > # umi konvertovat i GPS souradnice > return blablabla; > [...] > Tohle je velmi blízké tomu co chci udělat a díky > statické metodě vím, že metoda __add__ ve třídě > uhel bude naprosto správně fungovat i pro potomky, > [...]
Tohle použití vypadá velmi rozumně. Přidávám to k tomu případu, kdy statické metody používají statické proměnné. Shrnuto, jde tedy o případ, kdy je statická metoda volána z metody objektu stejné třídy a chci dosáhnout polymorfního chování. Nikdy jsem to nepoužil a nechce se mi to zkoušet. Bude ta metoda v potomkovi automaticky taky statická? pepr _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
