Michael wrote: > sorry, I'm used to working in c++ :-p > > if i do > a=2 > b=a > b=0 > then a is still 2!? > > so when do = mean a reference to the same object and when does it mean make > a copy of the object??
To understand this in C++ terms, you have to treat everything, including simple integers, as a class instance, and every variable is a reference (or "smart pointer".) The literals '0' and '2' produce integer class instances rather than primitive integers. Here's a reasonable C++ translation of that code, omitting destruction issues: class Integer { private: int value; public: Integer(int v) { value = v; } int asInt() { return value; } } void test() { Integer *a, *b; a = new Integer(2); b = a; b = new Integer(0); } In that light, do you see why a is still 2? Shane -- http://mail.python.org/mailman/listinfo/python-list