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