On Feb 7, 8:16 pm, Chris Rebert <c...@rebertia.com> wrote: > On Sun, Feb 7, 2010 at 5:05 PM, T <misceveryth...@gmail.com> wrote: > > Ok, just looking for a sanity check here, or maybe something I'm > > missing. I have a class Test, for example: > > > class Test: > > def __init__(self, param1, param2, param3): > > self.param1 = param1 > > self.param2 = param2 > > self.param3 = param3 > > > Next, I have a dictionary mytest that contains instances of Test. If > > I want to modify one of the Test instances within my dictionary, I > > have to rewrite the entire entry, correct (since Python passes by > > value, not reference)? > > Incorrect; Python uses neither. > Seehttp://effbot.org/zone/call-by-object.htmfor a excellent explanation > of what Python does use. > > > I.e. if I wish to change just param3 of an > > instance, I would have to do: > > > def changevalue(): > > for key in mytest.keys(): > > currentparam = mytest[key] > > param1 = currentparam.param1 > > param2 = currentparam.param2 > > param3 = currentparam.param3 > > param3 = "newvalue" > > mytest[key] = Test(param1, param2, param3) > > > If there's an easier way to accomplish this that I'm missing, that'd > > be great! > > def changevalue(): > for test in mytest.values(): > test.param3 = "newvalue" > > Cheers, > Chris > --http://blog.rebertia.com
Thanks so much - this makes life a lot easier! And a great reference as well. Cheers, Doug -- http://mail.python.org/mailman/listinfo/python-list