def __new__(*args, **kwargs): realcls = args[0] #cls = realcls #print 'Baseobject __new__: ', cls if realcls != BaseObject: for cls in iterbases(realcls, BaseObject.__bases__[0]): #while issubclass(cls, BaseObject): #props = getattr(cls, '_Properties', {}) props = cls.__dict__.get('_Properties', {}) for key, val in props.iteritems(): if not hasattr(cls, key): p_kwargs = val.copy() p_kwargs.setdefault('name', key) p_kwargs['cls'] = cls property = Properties.ClsProperty(**p_kwargs) setattr(cls, property.name, property) #cls = cls.__bases__[0] #return SignalDispatcher.dispatcher.__new__(*args, **kwargs) return object.__new__(realcls)