Форум сайта python.su
0
j2aнапример
чтобы ответить, нужно видеть код декоратора, потому что он может менять как входные, так и выходные.
def empty(f):
return None
@empty
def func(x, y):
return x + y
print func
Офлайн
1
qmanнет, он подменяет саму функциюj2aмодифицирует выходное значение функции?
чтобы ответить, нужно видеть код декоратора, потому что он может менять как входные, так и выходные.
Офлайн
26
qman, попробуй подставить свою функцию в, так сказать, шаблон,приведённый j2a в после №5.
def empty(f):
return None
@empty
def func(x, y):
return x + y
print func
def empty(f):
return None
def func(x, y):
return x + y
func = empty(func) # Что тут вернётся? :-)
print func
Офлайн
1
ZZZНе нашел применения декораторам? Если интересно, то можно покопаться… с ходу вспоминаются джанговские декораторы @login, @cache и пр.
Я тоже не сразу понял, как оно работает. Потратил кучу времени на игру с ними, но так и не нашёл пока реального применения. Хотя, зараза, интересно.
Офлайн
13
А мне вот этот нравится: http://code.activestate.com/recipes/576684/
Офлайн
26
Да нет, это всё замечательно, когда оно уже написано и можно использовать. Как самый частый у меня пример приведу @with_setup из nosetests. Сам написал тучу разных декораторов, типа мемоизации или каста аргументов/ретурна, но всё равно это всё как-то очень редко используется. Но я сильно не переживаю – придёт. :-)
Офлайн
14
@EventHandler(self)(self.panel.exer_asgn_widget.ItemClick)
@with_status(status_bar)
def on_assign_all_click(self, sender, event_args):
....
@combo(on_event(self.panel.expire_widget.ItemClick), status_handler, transacted)
def on_expire_all_click(self, sender, event_args):
...
Офлайн
26
Оба-на! Какая красотища!
Это Tk? Никогда на нём не писал… А теперь аж интересно стало…
Офлайн
72
Андрей СветловМощно!!!@EventHandler(self)(self.panel.exer_asgn_widget.ItemClick)
@with_status(status_bar)
def on_assign_all_click(self, sender, event_args):
....
@combo(on_event(self.panel.expire_widget.ItemClick), status_handler, transacted)
def on_expire_all_click(self, sender, event_args):
...
Офлайн
14
ZZZ
Нет, это не Tk.
Это вообще python.net и WinForms.
Но декораторы, естественно, самопальные. Там и писать-то нечего, если есть четкое понимание цели.
То же самое легко сделать практически для любого GUI.
Офлайн