summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2007-05-02 00:12:31 +0000
committerJohan Dahlin <johan@src.gnome.org>2007-05-02 00:12:31 +0000
commit784da2ea28089d662f7ab122ba401b66953c52f4 (patch)
tree29cebb12a6fa363ef366da59f7c4da8681c29dfe
parent4ddb6f3b99d4b98eb81eb6e0940aba48b5841947 (diff)
downloadpygobject-784da2ea28089d662f7ab122ba401b66953c52f4.tar.gz
pygobject-784da2ea28089d662f7ab122ba401b66953c52f4.tar.xz
pygobject-784da2ea28089d662f7ab122ba401b66953c52f4.zip
Store property values in the descriptor per instance, add a test.
* gobject/propertyhelper.py: * tests/test_properties.py: Store property values in the descriptor per instance, add a test. svn path=/trunk/; revision=665
-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')