Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2011 16:55:50

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Closure - Реально?

РЕально ли на Питоне реализовать такой код.

Это ява скрипт.
obj.call(function(message){
alert(message);
})

Nested functions не совсем подходят….

def ex():
def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)


Не совсем подходит, так как этих ивентов може быть много….
Хотелось бы так…

b = gtk.Button(“H”)
b.connect(
“clicked”,
def (widget):
print widget.get_text()
)


Спасибо.



Офлайн

#2 Ноя. 7, 2011 17:05:58

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Closure - Реально?

Много событий=много вложенных функций. В чем проблема?



Офлайн

#3 Ноя. 7, 2011 17:21:58

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Closure - Реально?

def ex():
def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)

def event(widget):
print widget.get_text() + 2
b = gtk.Button(“H”)
b.connect(“clicked”, event)

def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)

Прокатит?



Офлайн

#4 Ноя. 7, 2011 17:23:24

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Closure - Реально?

А как заставить работать мой вариант?

b = gtk.Button(“H”)
b.connect(
“clicked”,
def (widget):
print widget.get_text()
)



Офлайн

#5 Ноя. 7, 2011 21:26:48

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Closure - Реально?

> Прокатит?
Да.

Другие варианты:
1. b.connect('clicked', lambda widget: widget.get_text())
2. b.connect('clicked', operator.methodcaller('get_text'))
3. b.connect('clicked', functools.partial(Button.get_text))

В Python нет анонимных функций, только лямбда.

..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version