On Nov 7, 3:03 pm, Arnaud Delobelle <[EMAIL PROTECTED]> wrote: > Joe Strout <[EMAIL PROTECTED]> writes: > > So. How about this for a summary? > > > "Python uses call-by-sharing. That's a special case of call-by-value > > where the variables are references to objects; it is these references > > that are copied to the parameters, not the objects themselves. For > > users of other languages, this is the same semantics used for objects > > in Java, RB/VB.NET, and C++ when dealing with objects." > > Here's a story about call by sharing: > > One day a black cat came strolling into our garden. It seemed quite > hungry so we gave it some milk and food remains. The cat drank the milk > and ate the food, stayed for a bit then walked away. A couple of days > later it came back, miaowing, so we fed it again. It started coming to > see us almost every day, sometimes sleeping in the house, sometimes > disappearing for a day or two. We started thinking of it as our cat and > we *named* it Napoleon. Napoleon became very popular and stayed at home > more and more often, and very young son was very fond of it, calling it > something like 'Polion'. > > Unfortunately Napoleon got infested with fleas and we had to take him to > the vet. The vet scanned Napoleon with a little machine and discovered > that it had an ID chip. This revealed that Napoleon was really called > Nelson (ironically!) and belonged to a house down our road. We > contacted them and they were happy to 'share' the cat with us. By this > time the cat answered to the name of Napoleon so we carried on calling > it this name. > > This story ends quite sadly. One day Napoleon escaped out the front > door and got run over by a passing van. Our son kept asking for Polion > so we decided to get a new cat and called him Napoleon as well (we > decided it would be easier for him!). > > Now some questions about the story: Sorry didn't read above yet.
> 1. Is Napoleon a copy of Dobby or are they the same cat? Same cat. > 2. Is Polion a copy of Napoleon or are they the same cat? Same cat. > 3. When we got rid of Napoleon's fleas, was Nelson deflea-ed as well? Yes. > 4. When Napoleon died, did Nelson die as well? No, honey. He lives on in all of us. > 5. When we got a new Napoleon, does this mean that our neighbours got a > new Nelson? No, darling, Nelson is just sleeping. When we got a New Orleans, where did the old one go? > Now a question about the questions about the story: > > To be able to understand the story and answer questions 1-5, do we > need to think of Napoleon, Nelson and Polion as variables containing > references to cat objects, or is it enough to think of them as three > names for cats? I think they are names, implying that Python has a different "variable model" than C++. However, a[0] isn't exactly a name, per se, and if you say that 'b' and 'a[0]' are names of an object, then 'a[1-1]', 'a[2*0]', etc. are all names of it. Furthermore, some class models variables like this: a.b= 'abc' a.c= 'def' a.d= 'ghi' It also allows index access: a[0], a[1], a[2], respectively. 'abc' has two names: 'a.b', and 'a[0]'. Correct? -- http://mail.python.org/mailman/listinfo/python-list