Index: src/org/python/core/PyJavaType.java =================================================================== --- src/org/python/core/PyJavaType.java (revision 6432) +++ src/org/python/core/PyJavaType.java (working copy) @@ -420,10 +420,11 @@ // up, it'll be rejected below if (prop.setMethod == null) { prop.setMethod = superProp.setMethod; - } else if (superProp.myType == prop.setMethod.getParameterTypes()[0]) { - // Otherwise, we must not have a get method. Only take a get method if the type - // on it agrees with the set method we already have. The bean on this type - // overrides a conflicting one o the parent + } else if (prop.getMethod == null + && superProp.myType == prop.setMethod.getParameterTypes()[0]) { + // Only take a get method if the type on it agrees with the set method + // we already have. The bean on this type overrides a conflicting one + // of the parent prop.getMethod = superProp.getMethod; prop.myType = superProp.myType; } Index: tests/java/org/python/tests/Child2.java =================================================================== --- tests/java/org/python/tests/Child2.java (revision 0) +++ tests/java/org/python/tests/Child2.java (revision 0) @@ -0,0 +1,13 @@ +package org.python.tests; + +public class Child2 extends Parent { + + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = "Child2 " + value; + } +} Index: Lib/test/test_java_integration.py =================================================================== --- Lib/test/test_java_integration.py (revision 6432) +++ Lib/test/test_java_integration.py (working copy) @@ -20,7 +20,7 @@ from javax.swing.tree import TreePath from org.python.core.util import FileUtil -from org.python.tests import BeanImplementation, Child, Listenable, CustomizableMapHolder +from org.python.tests import BeanImplementation, Child, Child2, Listenable, CustomizableMapHolder from org.python.tests.mro import (ConfusedOnGetitemAdd, FirstPredefinedGetitem, GetitemAdder) class InstantiationTest(unittest.TestCase): @@ -75,6 +75,13 @@ c.id = 16 self.assertEquals(16, c.id) + def test_inheriting_half_bean_issue1333(self): + # http://bugs.jython.org/issue1333 + c = Child2() + self.assertEquals("blah", c.value) + c.value = "bleh" + self.assertEquals("Child2 bleh", c.value) + def test_awt_hack(self): # We ignore several deprecated methods in java.awt.* in favor of bean properties that were # addded in Java 1.1. This tests that one of those bean properties is visible.