[python] Statické metody v Pythonu
Roman Miklos
RMiklos na pss.sk
Středa Listopad 8 13:03:33 CET 2006
Tvrdis to sice dost sebavedome, ale ja tomu nerozumiem, preco musi byt ta
metoda v triede uhel prave staticka a preco nemoze byt dynamicka, ked ju v
objekte zemepisny_uhel prekryvas? Coby sa stalo, keby bola dynamicka?
Naco je ta metoda staticka to je spolocna pre vsetky instancie triedy, ked
ju ides potom prekryvat?
Cely tvoj priklad nefunguje a volanie self.static_str_na_radiany mi
vyhadzuje chybu
static_str_na_radiany() takes exactly 1 argument (2 given)
Ako mozes pouzit pri tom volani self, ked je to referencia na konkretnu
instanciu?
Aby som to demonstroval. prejdem k jednoduchsiemu prikladu, ktory tu bol
uverejneny
class S(object):
@staticmethod
def staticM(pp):
print pp*2
def metod2(pp):
self.staticM(pp);
si=S()
si.metod2("nazdar ")
tak toto mi vyhodi tu istu chybu
metod2() takes exactly 1 argument (2 given)
Takze cez self sa na takuto metodu odvolavat v tej istej triede nemozes!
Pouzitie statickej metody (t.j. metody triedy) by som videl v tom keby
pracovala so statickymi premennymi (t.j. premennymi triedy), to je takymi
premennymi, ktore su pre vsetky instancie danej triedy spolocne.
Ale z tvojho vykladu to nevidim. Skus to prosim nejako vysvetlit, aj s
funkcnym kodom.
superman <feed na centrum.cz>
Sent by: python-bounces na py.cz
08.11.2006 12:17
Please respond to
Konference PyCZ <python na py.cz>
To
Konference PyCZ <python na py.cz>
cc
Subject
Re: [python] Statické metody v Pythonu
Omlouvám se, samozřejmě v té ukázce má být class uhel a class
zemepisny_uhel namísto def, ale to jste asi pochopili.
Miloslav Ponkrác
> def uhel:
> @staticmethod
> def static_str_na_radiany(s):
> # tato metoda umi konvertovat matematicky
> # uhel zapsany ve stringu na radiany
> return blablabla;
>
> def __add__(self, other):
> if isinstance(other, basestring):
> return uhel(self.__radians + self.static_str_na_radiany(other));
> elseif:
> # a tak dale
>
> def 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;
>
> zem_uhel = zemepisny_uhel(30.0)
> zem_uhel = zem_uhel + "30N54"
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python
Mgr. Ing. Roman MIKLÓ©
Prvá stavebná sporiteµňa a.s.
Bajkalská 30, P. O. Box 48
829 48 Bratislava 25
Tel.: +421/ 2 / 582 31 174
Fax: +421/ 2 / 582 31 109
Daląí informace o konferenci Python