Decoradores e ações Qt

Então, ao usar os vínculos PyQt padrão da Riverbank (nunca usei PySide), acabo usando muito esse hack, para resolver um “problema” de implementação no PyQt, onde os sinais acabavam sendo conectados a dois slots, causando o método a ser chamado duas vezes:

def on_actionSomeAction_triggered(self, checked=None):
if checked is None:
return

Embora seja um código muito simples, pode ser chato e feio quando você tem muitos métodos. Então, implementei um decorador simples para evitar a duplicação de código:

def if_none_return(function):
def decorated_function(self, checked=None):
if checked is None:
return
function(self, checked)
decorated_function
.func_name = function.func_name
return decorated_function

Você pode usá-lo assim:

@if_none_return
def on_actionSomeAction_triggered(self, checked=None):
if checked is None:
return

A magia do python até mesmo cuida de todas as coisas de vinculação de métodos, apenas siga as convenções.

PS: Alguém sabe como eu configurei o destaque de sintaxe para isso? Ou está definido automagicamente? ATUALIZAÇÃO: Não importa, é automático.