From f66505b9e43226d731fefdfd37325f411f7e0de1 Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Mon, 27 Aug 2007 15:59:00 +0000 Subject: Refactor a bit to make sure that it is possible to use in subclasses, 2007-08-27 Johan Dahlin * gobject/__init__.py (GObjectMeta._install_properties): Refactor a bit to make sure that it is possible to use in subclasses, fixes #470718 (Marco Giusti) svn path=/trunk/; revision=699 --- gobject/__init__.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'gobject') diff --git a/gobject/__init__.py b/gobject/__init__.py index d251d31..c1404f9 100644 --- a/gobject/__init__.py +++ b/gobject/__init__.py @@ -42,27 +42,26 @@ class GObjectMeta(type): def _install_properties(cls): gproperties = getattr(cls, '__gproperties__', {}) - props = {} + + props = [] for name, prop in cls.__dict__.items(): if isinstance(prop, property): # not same as the built-in if name in gproperties: raise ValueError prop.name = name - props[name] = prop.get_pspec_args() + gproperties[name] = prop.get_pspec_args() + props.append(prop) if not props: return - if not gproperties: - cls.__gproperties__ = props - else: - gproperties.update(props) + cls.__gproperties__ = gproperties if (hasattr(cls, 'do_get_property') or hasattr(cls, 'do_set_property')): for prop in props: - if (prop.getter != prop.default_getter or - prop.setter != prop.default_setter): + if (prop.getter != prop._default_getter or + prop.setter != prop._default_setter): raise TypeError( "GObject subclass %r defines do_get/set_property" " and it also uses a property which a custom setter" -- cgit