All of the objects in Python are passed by reference: the address and the type of the object. The immutable types, such as our old friend the int, are shared by the function and the application, as well. Assigning to the function variable containing the int cannot change the int itself, only the address referenced by the variable...
<after re-reading the post> >>> class ClassName: ... class_variable = ["apples", ["oranges"]] ... def __init__ (self, var = class_variable [:]): ... self.instance_variable = var ... >>> oo = ClassName () >>> oo.class_variable.append ("fruit flies") >>> oo.instance_variable.append ("pears") >>> ov = ClassName () >>> ov.instance_variable.append ("tomato") >>> ov.instance_variable [1].append ("mold") >>> ow = ClassName () >>> oo.instance_variable ["apples", ["oranges"], "pears"] >>> ov.instance_variable ["apples", ["oranges", "mold"], "fruit flies", "tomato"] >>> ow.instance_variable ["apples", ["oranges", "mold"], "fruit flies"] >>> >>> # Here, we have a comparison of the class_variable to the ... # instance_variable and of a shallow_copy to a deep_copy. ... ... # shallow copy ... x = x [:] >>> # if x was refering to something else that we do not want ... # changed as we work with it. >>> >>> def copylist (*o): ... a = [] ... for i in o: ... try: a.append (deep_copy (*i)) ... except: a.append (i) ... return a ... >>> import sys; sys.exit (005) (For the C/C+ (sic.) types: the dereferentiation operator... *) _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor