Binding a variable?
Tom Anderson
twic at urchin.earth.li
Fri Oct 21 13:51:19 EDT 2005
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.
More information about the Python-list
mailing list