self-aware list of objects able to sense constituent member alterations?

John O'Hagan mail at
Wed Jan 28 10:37:44 CET 2009

On Tue, 27 Jan 2009, Reckoner wrote:
> I'm not sure this is possible, but I would like to have
> a list of  objects
> A=[a,b,c,d,...,z]
> where,  in the midst of a lot of processing I might do something like,
> A[0].do_something_which_changes_the_properties()
> which alter the properties of the object 'a'.
> The trick is that I would like A to be mysteriously aware that
> something about the  object 'a' has changed so that when I revisit A,
> I will know that the other items in the list need to be refreshed to
> reflect the changes in A as a result of changing 'a'.
> Even better would be to automatically percolate the subsequent changes
> that resulted from altering 'a' for the rest of the items in the list.

Interesting question.

Maybe this is too simple for your purpose (or maybe just wrong!), but could 
you subclass list and give it an "update" method which keeps a dictionary of 
the state of its members and/or calls another method that makes the 
appropriate changes in the other members when a change occurs, something 

class SelfAwareList(list):
    state_dict = {}
    def update(self):
        for i in self:
            if i.state == 'some_condition':
       	    self.state_dict[i] = i.state
    def do_stuff_to_other_members(self):
        print 'doing stuff...'


You could manually call update() on the SelfAwareList instance after calling a 
method on a SelfAwareList member, or even build it into the members' methods 
so that it was automatic.



More information about the Python-list mailing list