Используя споры ключевого слова со значениями по умолчанию (как предложено kquinn) хорошая идея, но потребует, чтобы Вы включали круглую скобку:
@redirect_output()
def foo():
...
, Если Вы хотели бы версию, которая работает без круглой скобки над декоратором, которого необходимо будет считать обоими сценариями в коде декоратора.
при использовании Python 3.0, Вы могли бы использовать ключевое слово только аргументы в пользу этого:
def redirect_output(fn=None,*,destination=None):
destination = sys.stderr if destination is None else destination
def wrapper(*args, **kwargs):
... # your code here
if fn is None:
def decorator(fn):
return functools.update_wrapper(wrapper, fn)
return decorator
else:
return functools.update_wrapper(wrapper, fn)
В Python 2.x это может быть эмулировано с приемами varargs:
def redirected_output(*fn,**options):
destination = options.pop('destination', sys.stderr)
if options:
raise TypeError("unsupported keyword arguments: %s" %
",".join(options.keys()))
def wrapper(*args, **kwargs):
... # your code here
if fn:
return functools.update_wrapper(wrapper, fn[0])
else:
def decorator(fn):
return functools.update_wrapper(wrapper, fn)
return decorator
Любая из этих версий позволила бы Вам писать код как это:
@redirected_output
def foo():
...
@redirected_output(destination="somewhere.log")
def bar():
...
It turns out you can do it by extending DeckPanel
. Here's an excellent discussion, along with a nice demo that proves it works.
http://whatwouldnickdo.com/wordpress/370/gwt-right-click-context-menu/
Хотя есть способы сделать это, я считаю, что команда GWT дискутировала по этому поводу и решила, что включение правой кнопки мыши в веб-приложении - это плохо, и поэтому приняла осознанное решение не поддерживать его. . Аргумент заключался в том, что щелчок правой кнопкой мыши должен продолжать работать, как ожидалось (вызывать контекстное меню щелчка правой кнопкой мыши в главном браузере), и переопределение этого нарушало это ожидаемое поведение и было бы плохой практикой. Хотя у меня были случаи, когда контекстное меню правой кнопки мыши было бы полезным, в целом я склонен согласиться с решением команды GWT.