summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--gobject/propertyhelper.py6
-rw-r--r--tests/test_properties.py12
3 files changed, 20 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 4fd89ba..08d5a3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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')