class InsertRemoveJTree( JTree ):
def setModel( self, treeModel ):
# for reasons I don't understand, the first call below results in infinite recursion...
# in other words the "super" approach returns this object, not its underlying base-class
# object. The second approach works as expected
# super( InsertRemoveJTree, self ).setModel( treeModel )
JTree.setModel( self, treeModel )
有人知道这是怎么回事吗?“setModel”是 dir() 列出的 InsertRemoveJTree 对象的一个属性。
JTree 中的许多其他方法也可以使用“超级”方法正常工作。
我也尝试过:
super(InsertRemoveJTree, self ).model = treeModel
...但它声称没有attr“模型”
之后
我得出的结论是,这是由于在预先存在的 Java 类上调用方法而造成的限制,并且我的声明“JTree 中的许多其他方法也可以使用“超级”方法正常工作。” 是错的。有一些受保护的方法是通过 super_XXX 调用的(例如 DefaultTreeModel: super _fireTreeNodesInserted),它们会给 Jython 新手用户带来不少问题,直到您开始使用 dir(inserted) 检查实例的属性。但作为一项规则,这似乎是一个普遍的限制:即不能使用“super(PresentClass, self)...”调用 Jython 中子类化的 Java 类的基类。