SWIG Python приведение от родительского к дочернему объекту - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь использовать привязки 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 , переход между типами объектов? Возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...