我在2010年看到类似的问题发生在JRuby上,当时我们试图在Jruby中覆盖一个在java源代码上重载的方法。我们如何在Jython中处理这个问题?更具体地说,我如何指定其中一个重载方法被覆盖并忽略剩余的方法或如何覆盖所有方法?
谢谢
答案 0 :(得分:1)
Python不支持方法重载(但它支持默认值)。
def my_function(paramA, paramB = None):
pass
由于Jython仅仅是一个Python实现,我相信它也是如此。
答案 1 :(得分:0)
要从Jython调用特定的Java方法,您可能必须使类型非常接近,甚至完全匹配。
Jython做了一些type coercion,但是在某些情况下,这不会选择你想要的方法。
要在特定基类上调用公共方法,可以使用BaseClass.method(self, ...)
。要调用受保护的方法,您必须prefix方法名称,如self.super__method(...)
。