Thu, 11 Jan 2001 12:10:21 -0500
On Thu, Jan 11, 2001 at 10:50:46AM -0500, Michael P. Reilly wrote:
| > --=====_97922590441=_
| > Content-Type: text/plain; charset="us-ascii"
| > Dear Sir/Madam,
| > Does python offer the function like the "&" in FoxPro?
| > i.e. in foxpro, some code like following:
| > a="I am a"
| > b="a"
| > print &b
| > may print the content of variable a.
| > Can one do like this in python?
| > Many Thanks,
| > Xia XQ
I've never used FoxPro, but I'll try to help anyways.
| You're thinking of "soft references". You can do that in Python, but
| not in the same way; everything is a reference after all. Because of
| the namespace rules in Python, it is easier to use eval (or exec) to do
| what you want.
| >>> a = "I am a"
| >>> b = "a"
| >>> print eval(b)
| I am a
Couldn't you just do:
a = "I am a"
b = a
In this case, changing the value of a won't affect b. To have this
effect (without using eval as already demonstrated) you would need 2
layers of references -- a reference to the string, then a & b would be
references to that reference. Then you would modify the external
reference to make sure a & b refer to the new value.
class Pointer :
def __init__( self , value ) :
self.value = value
c = Pointer( "The value" )
a = c
b = c
print a.value # The value
print b.value # The value
c.value = "A new value"
print a.value # A new value
print b.value # A new value
In this case, c is an object that has a member called "value". When
the assignment c.value = "A new value" is executed, the value of
'value' changes, but the value of 'c' doesn't. a and b are references
to c. Since c didn't change, a and b refer to the same object, whose
Does this help at all?
PS. There is probably an easier way to have "pointers" in python, but
someone more experienced will have to demonstrate this.