Modifying Class Object
T
misceverything at gmail.com
Sun Feb 7 20:24:13 EST 2010
On Feb 7, 8:16 pm, Chris Rebert <c... at rebertia.com> wrote:
> On Sun, Feb 7, 2010 at 5:05 PM, T <misceveryth... at 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
More information about the Python-list
mailing list