Как переопределить перегруженные функции в Python - PullRequest
0 голосов
/ 03 мая 2018

(Python squish) Я переопределяю следующие методы -

installEventHandler(eventName, handlerFunctionName);

installEventHandler(className, eventName, handlerFunctionName);

installEventHandler(object, eventName, handlerFunctionName);

В моем методе

def MyinstallEventHandler(???)

Я не уверен, что я должен определить в своей функции, чтобы я мог переопределить все методы.

Когда я пытаюсь передать * args, он считается кортежем и не соответствует ни одному из вышеперечисленных методов.

Перегруженные методы - это методы сжатия. Я хочу переопределить вышеупомянутые три метода и не могу найти никакого решения для этого.

1 Ответ

0 голосов
/ 03 мая 2018

Глядя на эти примеры , кажется, что вызова installEventHandler(*args), где args - это кортеж подходящих аргументов (2 или 3), достаточно. Если вы хотите создать свой собственный installEventHandler, который использует другие параметры, просто создайте то, что вы хотите создать, и сделайте это так, чтобы вы могли назвать исходный installEventHandler.

Примечание о перегрузке:

Встроенный Python не позволяет обрабатывать перегрузки. Однако вы можете использовать одну отправку, которая позволяет обрабатывать простые случаи в зависимости от типа аргумента first . Декоратор singledispatch реализован в functools .

Пакет перегрузка предоставляет вам более сложную поддержку перегрузки функций, рассматривая типы ваших аргументов. В зависимости от версии Python может потребоваться изменить некоторые строки, чтобы сохранить совместимость typing.

В вашем случае было бы невозможно применить эти решения, поскольку ваши оригинальные методы не украшены подходящими декораторами.

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