继承Java接口时,Jython类是否自动调用setter?

时间:2012-11-05 16:35:41

标签: jython pydev

我查看了Jython.org上的Jython书,并仔细阅读了互联网上的一些答案,但我没有看到任何暗示以下内容(我觉得很奇怪)的行为。我在Eclipse 3.6.1中使用PyDev 1.5.7和Jython 2.5.3进行此操作。

当执行self.val = val时,从具有setter的Java接口继承的Jython类是否会自动调用setVal?

这是Java界面:

package com.me.mypackage
import org.python.core.PyDictionary;

public interface MyInterface {

    public double getMaxBW();

    public boolean setMaxBW(double bw);

}

这是Jython类:

from com.me.mypackage import MyInterface

class MyClass(MyInterface):

  def __init__(self, maxBW):
    self.maxBW = maxBW

  def setMaxBW(self, maxBW):
    self.maxBW = maxBW

  def getMaxBW(self):
    return self.maxBW

当我在__init__函数中实例化类时:

  1. 在运行self.maxBW = maxBW时调用setMaxBW
  2. 此函数调用依次运行self.maxBW = maxBW
  3. 此代码再次调用setMaxBW
  4. 此函数调用依次运行self.maxBW = maxBW
  5. 永远重复
  6. 由于这种无限递归,我在达到最大递归深度后得到一个RuntimeError。

    有人认为这是一个漂亮的新式Python类正在做的事情(我的大部分时间都花在旧式类上)但纯粹的Jython(在Eclipse中或从命令行),不从Java接口继承。我没有尝试过Eclipse之外的接口继承。

    现在我重申我的初步问题但是在我的代码的上下文中:当self.maxBW = maxBW被执行时,是否继承带有setter的Java接口的Jython类会自动调用setMaxBW?

0 个答案:

没有答案