diff options
author | Johan Dahlin <johan@src.gnome.org> | 2007-05-02 00:12:31 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2007-05-02 00:12:31 +0000 |
commit | 784da2ea28089d662f7ab122ba401b66953c52f4 (patch) | |
tree | 29cebb12a6fa363ef366da59f7c4da8681c29dfe | |
parent | 4ddb6f3b99d4b98eb81eb6e0940aba48b5841947 (diff) | |
download | pygobject-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-- | 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') |