Como se conectar a um sinal GObject em python, sem que ele mantenha uma referência ao conector?

O problema é basicamente isso, nas ligações gobject e gtk do python. Suponha que temos uma classe que se liga a um sinal quando construída:

class ClipboardMonitor (object):
  def __init__(self):
    clip = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD)
    clip.connect("owner-change", self._clipboard_changed)

O problema agora é quenenhuma instância do ClipboardMonitor vai morrer. A área de transferência gtk é um objeto de todo o aplicativo, e conectar-se a ela mantém uma referência ao objeto, já que usamos o retorno de chamadaself._clipboard_changed.

Estou debatendo como contornar isso usando referências fracas (módulo weakref), mas ainda tenho que criar um plano. Qualquer um tem uma idéia de como passar um retorno de chamada para o registro do sinal, e fazer com que ele se comporte como uma referência fraca (se o retorno de chamada do sinal for chamado quando a instância do ClipboardMonitor estiver fora do escopo, ele não funcionará).

Adição:Frase independentemente do GObject ou GTK +:

Como você fornece um método de retorno de chamada para um objeto opaco, com semântica weakref? Se o objeto de conexão ficar fora do escopo, ele deverá ser excluído e o retorno de chamada deverá funcionar como não operacional; o conector não deve conter uma referência ao conector.

Para esclarecer: eu quero explicitamente evitar ter que chamar um método "destruidor / finalizador"

questionAnswers(3)

yourAnswerToTheQuestion