On Fri, 21 Oct 2005, Paul Dale wrote:

> Is it possible to bind a list member or variable to a variable such that
>
> temp = 5
> list = [ temp ]
> temp == 6
> list
>
> would show
>
> list = [ 6 ]

As you know by now, no. Like any problem in programming, this can be 
solved with a layer of abstraction: you need an object which behaves a bit 
like a variable, so that you can have multiple references to it. The 
simplest solution is to use a single-element list:

>>> temp = [None] # set up the list
>>> temp[0] = 5
>>> list = [temp]
>>> temp[0] = 6
>>> list
[[6]]

I think this is a bit ugly - the point of a list is to hold a sequence of 
things, so doing this strikes me as a bit of an abuse.

An alternative would be a class:

class var:
        def __init__(self, value=None):
                self.value = value
        def __str__(self): # not necessary, but handy
                return "<<" + str(self.val) + ">>"

>>> temp = var()
>>> temp.value = 5
>>> list = [temp]
>>> temp.value = 6
>>> list
[<<6>>]

This is more heavyweight, in terms of both code and execution resources, 
but it makes your intent clearer, which might make it worthwhile.

tom

-- 
Transform your language.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to