On Wed, Jan 13, 2010 at 9:24 PM, Guilherme P. de Freitas
<guilhe...@gpfreitas.com> wrote:
> Hi everybody,
>
> Here is my problem. I have two classes, 'Body' and 'Member', and some
> attributes of 'Body' can be of type 'Member', but some may not. The
> precise attributes that 'Body' has depend from instance to instance,
> and they can be added or deleted. I need any instance of 'Body' to
> keep an up-to-date list of all its attributes that belong to the class
> 'Member'. How do I do this?

If you want to keep track of attributes as they are added and deleted,
you should override __setattr__() and __delattr__() in your Body
class.
http://docs.python.org/reference/datamodel.html#customizing-attribute-access
Here is a simple example:

In [4]: class LogAttributes(object):
   ...:     def __setattr__(self, name, value):
   ...:         print 'setting', name, 'to', value, type(value)
   ...:         object.__setattr__(self, name, value)
   ...:     def __delattr__(self, name):
   ...:         print 'removing', name
   ...:         object.__delattr__(self, name)

In [5]: l = LogAttributes()

In [6]: l.foo = 'bar'
setting foo to bar <type 'str'>

In [7]: l.foo
Out[7]: 'bar'

In [8]: del l.foo
removing foo

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to