[python] Metody korenoveho objektu

Jan Samohyl samohyl na webseek.cz
Neděle Duben 6 14:18:15 CEST 2003


> > Co je zac to HOM? Asi v os na pandora se o tom kdysi mluvilo, ale ja jsem to
> > nestihal cist...
> 
> High order messages, Zpravy (terminologii pythonu asi metody) vyssich radu. 
> Umozni to psat takove veci jako:
> 
> kontejnerWoken.each().close()
> (zavola vsechny metodu close u kazdeho okna)
> 
> kontejnerWoken.collect().maMinimalizacniTlacitko()
> (udela seznam oken, ktere maji minimalisacni tlacitko)
> 
> wokno.afterDelay(6000).close()
> (za minutu zavre okno)
> 
> serwer.repeatWithDelay(6000).ping()
> (kazdou minutu pingne server)
> 
> For je v tom, ze tyto metody by mely vytvaret moznost, jak pracovat se vsemi 
> objekty, protoze by to mel byt obecny mechanismus. Nechce se mi delat si 
> vlastniho spolecneho predka, protoze ten neobsahne vsechny objekty v systemu.

Hm, je to pekna blbost, zajimava mozna teoreticky. Hlavni vyhrada je, ze nevidim nic, co by se tim dalo zapsat citelneji nebo 
alespon vyrazne kratceji nez standartne pomoci iteratoru apod. Citelneji myslim to, aby tomu jednak rozumelo vic lidi a 
nemuselo se predtim ucit co to vubec je, nikoli to ze napisu do jedne radky neco co bych normalne napsal na dve. Pokud mate 
protipriklad, sem s nim.

Co se tyce implementace, syntakticky to problem neni. V Pythonu lze zakladni objekty (ktery ale neni jen jeden univerzalni)
podedit a dat jim prislusne metody jako each(), collect(), ktere by pak vratily objekt s prislusnou metodou (treba .close()),
ktera by pak delala to co se od ni ceka. Akorat by vam pak nesmelo vadit, ze budete psat treba x=muj_slovnik({1:2,3:4}) misto
x={1:2,3:4}. Ale pak sbohem, efektivito (jak uz to tak u funkcionalniho programovani byva).

S pozdravem Jan Samohyl


Další informace o konferenci Python