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