diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | gobject/propertyhelper.py | 6 | ||||
-rw-r--r-- | tests/test_properties.py | 12 |
3 files changed, 20 insertions, 3 deletions
@@ -1,5 +1,10 @@ 2007-05-01 Johan Dahlin <johan@gnome.org> + * gobject/propertyhelper.py: + * tests/test_properties.py: + + Store property values in the descriptor per instance, add a test. + * examples/properties.py: * gobject/Makefile.am: * gobject/__init__.py: diff --git a/gobject/propertyhelper.py b/gobject/propertyhelper.py index f0c01e4..7f9197a 100644 --- a/gobject/propertyhelper.py +++ b/gobject/propertyhelper.py @@ -128,7 +128,7 @@ class property(object): self.name = None - self._value = self.default + self._values = {} self._exc = None def __repr__(self): @@ -253,10 +253,10 @@ class property(object): # def _default_setter(self, instance, value): - self._value = value + self._values[instance] = value def _default_getter(self, instance): - return self._value + return self._values.get(instance, self.default) def _readonly_setter(self, instance, value): self._exc = TypeError("%s property of %s is read-only" % ( diff --git a/tests/test_properties.py b/tests/test_properties.py index 423a8f6..3996b8d 100644 --- a/tests/test_properties.py +++ b/tests/test_properties.py @@ -278,3 +278,15 @@ class TestProperty(unittest.TestCase): self.assertRaises(TypeError, gobject.property, type=gtype, minimum=min, maximum=max+1) + + def testMultipleInstances(self): + class C(gobject.GObject): + prop = gobject.property(type=str, default='default') + + o1 = C() + o2 = C() + self.assertEqual(o1.prop, 'default') + self.assertEqual(o2.prop, 'default') + o1.prop = 'value' + self.assertEqual(o1.prop, 'value') + self.assertEqual(o2.prop, 'default') |