Modifying Class Object

Chris Rebert clp2 at rebertia.com
Sun Feb 7 20:16:19 EST 2010


On Sun, Feb 7, 2010 at 5:05 PM, T <misceverything 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. See
http://effbot.org/zone/call-by-object.htm for 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



More information about the Python-list mailing list