Наследование и замещение метода, pywinauto
В довольно известном модуле pywinauto, служащим для автоматизации действий, связанных с gui в windows, у класса Application, как это следует из документации, есть метод PrintControlIdentifiers. Он печатает на консоль список идентификаторов контролзов.
Если контролс имеет русскоязычное название, метод выводит его в часто упоминаемой escape unicode. Это очень неудобно, если интерфейс у автоматизируемой программы сплошь руссклязычный.
Решил переписать метод. Сделал класс на основе Application, написал свой метод с именем PrintControlIdentifiers и выяснил, что он не работает. Вернее, все старания не приводят к каким-либо изменениям того, что выводит этот метод. То есть, вообще работает код старого метода.
Полез разбираться в код pywinauto и выяснил, что у класса Application вообще нет метода PrintControlIdentifiers, а есть он у класса WindowSpecification и вызывается он где-то, похоже, как метод класса. Поизучал код, но не обнаружил, что WindowSpecification является суперклассом Application.
В связи с этим вопрос: как оно вообще работает как метод Application?
Ну и второй вопрос уже возникает сам собой... Что ещё можно сделать, чтобы читать названия контролзов в нормальном виде, если не переписывать код самого модуля? Вот в предыдущем посте в подобной ситуации предлагается eval и дальнейшая перекодировка, но наверняка же есть что-то более правильное...
Если контролс имеет русскоязычное название, метод выводит его в часто упоминаемой escape unicode. Это очень неудобно, если интерфейс у автоматизируемой программы сплошь руссклязычный.
Решил переписать метод. Сделал класс на основе Application, написал свой метод с именем PrintControlIdentifiers и выяснил, что он не работает. Вернее, все старания не приводят к каким-либо изменениям того, что выводит этот метод. То есть, вообще работает код старого метода.
Полез разбираться в код pywinauto и выяснил, что у класса Application вообще нет метода PrintControlIdentifiers, а есть он у класса WindowSpecification и вызывается он где-то, похоже, как метод класса. Поизучал код, но не обнаружил, что WindowSpecification является суперклассом Application.
В связи с этим вопрос: как оно вообще работает как метод Application?
Ну и второй вопрос уже возникает сам собой... Что ещё можно сделать, чтобы читать названия контролзов в нормальном виде, если не переписывать код самого модуля? Вот в предыдущем посте в подобной ситуации предлагается eval и дальнейшая перекодировка, но наверняка же есть что-то более правильное...
