Насколько я могу судить из доступных документов, GLib.io_add_watch () должен регистрировать функцию, вызываемую при возникновении условия в IOChannel, и функция обратного вызова должна приниматьсказал IOChannel в качестве первого аргумента.Отлично, кроме того, что это не так.GLib передает полностью другой объект IOChannel обратному вызову.Почему?
Другими словами, почему этот код создает ошибку AssertionError?
#!/usr/bin/env python3
import gi
from gi.repository import GLib
_, _, fd, _ = GLib.spawn_async(['/bin/echo', 'hello'], standard_output=True)
channel = GLib.IOChannel.unix_new(fd)
def on_read(callback_channel, condition):
assert callback_channel is channel
GLib.io_add_watch(channel, GLib.PRIORITY_DEFAULT, GLib.IO_IN, on_read)
GLib.MainLoop().run()