Donn Ingle a écrit :
>>class Key(object):
>>def __init__self):
>>self.__dict__['props'] = KeyProps()
> 
> Okay - that's weird.

No, that's coherent. The default behavior (I mean, when there's no 
descriptor involved etc) of __setattr__ is to store attributes in 
instance.__dict__. So as long a you override __setattr__, you have to 
take care of this by yourself.

> Is there another way to spin this?
> 
>>def __setattr__(self,var,val):
>>setattr(self.props,var,val)
> 
> Perhaps by changing this one?

If you know by advance which names should live in your object and/or 
which should belong to the KeyProps instance, then you can check and 
dispatch, ie:


class Key(object):
   # names that must not be delegated to instance.props
   _mynames = ['props', 'foo', 'bar']

   def __setattr__(self, name, value):
     if name in self._mynames:
       object.__setattr__(self, name, value)
     else:
       setattr(self.props, name, value)

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to