¿Cómo conectarse a una señal GObject en python, sin que mantenga una referencia al conector?

El problema es básicamente este, en los enlaces de objeto y gtk de python. Supongamos que tenemos una clase que se une a una señal cuando se construye:

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

El problema es que ahora,ninguna instancia de ClipboardMonitor morirá. El portapapeles gtk es un objeto de toda la aplicación, y conectarse a él mantiene una referencia al objeto, ya que usamos la devolución de llamadaself._clipboard_changed.

Estoy debatiendo cómo solucionar este problema utilizando referencias débiles (módulo de referencia débil), pero todavía no tengo un plan. Cualquiera tiene una idea de cómo pasar una devolución de llamada al registro de la señal, y hacer que se comporte como una referencia débil (si se llama a la devolución de llamada de la señal cuando la instancia de ClipboardMonitor está fuera de alcance, debería ser una operación sin opción).

Adición:Fraseado independientemente de GObject o GTK +:

¿Cómo se proporciona un método de devolución de llamada a un objeto opaco, con semántica débil? Si el objeto de conexión queda fuera del alcance, debe eliminarse y la devolución de llamada debe actuar como un no-op; el conector no debe contener una referencia al conector.

Para aclarar: quiero evitar explícitamente tener que llamar a un método "destructor / finalizador"

Respuestas a la pregunta(3)

Su respuesta a la pregunta