Hi all of you, I've some Vector class, which is a subclass of tuple and which is working satisfactorily since long in different contexts. Now I've constructed objects with attributes of Vec-type, which I wanted to deepcopy. But that doesn't work, because I can't (deep)copy Vec-s:
>>> from copy import deepcopy >>> class Vec(tuple): def __new__(cls, x, y): return tuple.__new__(cls, (x,y)) def __abs__(self): return (self[0]**2+self[1]**2)**0.5 ## more methods ... >>> a=Vec(3,4) >>> abs(a) 5.0 >>> b = deepcopy(a) Traceback (most recent call last): File "<pyshell#13>", line 1, in -toplevel- b = deepcopy(a) File "C:\Python24\lib\copy.py", line 204, in deepcopy y = _reconstruct(x, rv, 1, memo) File "C:\Python24\lib\copy.py", line 336, in _reconstruct y = callable(*args) File "C:\Python24\lib\copy_reg.py", line 92, in __newobj__ return cls.__new__(cls, *args) TypeError: __new__() takes exactly 3 arguments (2 given) Explanation? Remedy? Bug? Workaround? Regards, Gregor -- Gregor Lingl Reisnerstrasse 3/19 A-1030 Wien Telefon: +43 1 713 33 98 Mobil: +43 664 140 35 27 Website: python4kids.net _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor