[python] (no subject)

Tomas Brabenec konference na brabenec.net
Úterý Říjen 31 07:32:36 CET 2006


Nevim, proc mu na ten dotaz odpovidate, kdyz neumi dodrzet ani zakladni 
pravidlo konference :-(

TB


Dne 30.10.2006 10:27, Petr Prikryl napsal(a):
> Od Python 2.5 lze taky využít nový standardní modul
> functools a jím definovanou funkci partial() --
> viz dokumentace
>  
>   "6.6 functools -- Higher order functions and 
>    operations on callable objects. "
>
> Příklad pak lze přepsat takto:
>
> import functools
> from Tkinter import*
>
> def pis(co):
>     print co
>
> okno=Tk()
> menubar = Menu(okno)
> menu = Menu(menubar, tearoff=0)
> cisla=[1,2,3,4,5,6,7,8,9,10]
>
> for prvek in cisla:      
>     menu.add_cascade(label=prvek, 
>                      command=functools.partial(pis, prvek))
>
> menubar.add_cascade(label="cisla",menu=menu)    
> okno.config(menu=menubar)
> mainloop() 
>
> Radek Kanovsky
>   
>> Radek Kanovsky wrote:
>>
>>     
>>> Aby to fungovalo, musi se pouzit nejaky trik:
>>>     lambda p=prvek: pis(p)
>>> nebo
>>>     new.instancemethod(lambda p:pis(p), prvek, type(prvek))
>>>       
>> Ale necistsi reseni bez triku (a jeste pomerne kratke) je asi tohle:
>>
>>     def gen_pis_prvek(prvek):
>>         return lambda: pis(prvek)
>>
>>     for prvek in cisla:      
>>         menu.add_cascade(label=prvek, command=gen_pis_prvek(prvek))
>>     
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>   


Další informace o konferenci Python