Em Python, existe uma maneira de vincular um método não vinculado sem chamá-lo?
Estou escrevendo um programa wxPython e, para uma determinada classe, decidi que seria bom agrupar os dados de todos os meus botões como uma lista de tuplas em nível de classe, assim:
class MyWidget(wx.Window):
buttons = [("OK", OnOK),
("Cancel", OnCancel)]
# ...
def Setup(self):
for text, handler in MyWidget.buttons:
# This following line is the problem line.
b = wx.Button(parent, label=text).Bind(wx.EVT_BUTTON, handler)
O problema é que, como todos os valores de handler
são métodos desvinculados, meu programa explode em um incêndio espetacular e eu choro.
Eu estava procurando online por uma solução para o que parece ser um problema relativamente simples e solucionável. Infelizmente não consegui encontrar nada. No momento, estou usando functools.partial
para contornar isso, mas alguém sabe se existe uma maneira Pythônica com sensação de limpeza, saudável, de vincular um método não acoplado a uma instância e continuar passando-o sem chamá-lo?