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