Я пытаюсь использовать привязки python (привязки swig) для пакета libyui.
При получении ответа на событие libyui всегда возвращает родительский объект типа YEvent, а YEvent имеет eventType (), которая сообщает вам, какой это тип дочернего класса. Мне нужно иметь возможность привести родительский тип к дочернему типу, чтобы читать свойства дочернего объекта. Вот пример того, что я пробовал (d - это диалог, созданный YUI.widgetFactory):
event = d.waitForEvent()
if event.eventType() == yui.YEvent.WidgetEvent:
event.__class__ = yui.YWidgetEvent
ret['EventReason'] = event.toString(event.reason())ret['EventReason'] = event.toString(event.reason())
Я думал, что приведение родительского типа python к дочернему типу python позволит мне для вызова дочерних функций (event.reason ()), но это не удается:
TypeError: в методе 'YWidgetEvent_reason' аргумент 1 типа 'YWidgetEvent const *'
Поскольку единственный аргументом функции является YWidgetEvent, похоже, что он не работает, потому что YWidgetEvent не является YEvent (хотя это дочерний элемент этого типа).
Итак, в общем, как у вас с привязками SWIG python , переход между типами объектов? Возможно ли это?