如何在python中覆盖重载函数

时间:2018-05-03 04:00:29

标签: python qt overloading method-overriding squish

(Python挤压) 我正在重写以下方法 -

installEventHandler(eventName, handlerFunctionName);

installEventHandler(className, eventName, handlerFunctionName);

installEventHandler(object, eventName, handlerFunctionName);

在我的方法中,

def MyinstallEventHandler(???)

我不确定我应该在我的函数中定义什么,以便我可以覆盖所有方法。

当我尝试传递* args时,它被视为元组并且与上述任何方法都不匹配。

重载方法是压扁方法。我想覆盖以上三种方法,我无法找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

看看这些examples,看来调用installEventHandler(*args),其中args是一个合适的参数元组(2或3)就足够了。如果您想创建自己的installEventHandler使用其他参数,只需创建您要创建的内容并执行此操作即可调用原始installEventHandler

关于重载的说明:

内置Python不允许处理重载。但是,您可能希望使用单个调度,这允许您根据第一个参数的类型处理简单情况。 singledispatch装饰器在functools中实现。

overloading通过查看参数类型为您提供更复杂的重载函数支持。根据您的Python版本,您可能需要更改一些行以保持typing兼容性。

在您的情况下,应用这些解决方案是不可能的,因为您的原始方法没有使用合适的装饰器进行修饰。