Copy an Object (Again?)
Schüle Daniel
uval at rz.uni-karlsruhe.de
Fri Jan 6 14:58:21 EST 2006
KraftDiner wrote:
> I'm having trouble getting a copy of and object... (a deep copy)
>
> I'm writing a method that creates a mirror image of an object (on
> screen)
> In order to do this i need to get a copy of the object and then modify
> some
> of its attributes.
>
> I tried:
> objs = myListOfObjects
> for obj in objs:
> if obj.flag:
> newObject = copy.deepcopy(obj)
> newObject.mirror()
> myListOfObjects.append(newObject)
>
> That doesn't seem to work.. the new object seems to disapear from
> existance.
> I'm wondering if its a bug in my application or if this is my shallow
> understanding of the language.
>
> TIA
> B.
>
I think you should provide more code, eg what attributes does your
object have?
imagine the situation like this
>>> import copy
>>> class A:
... lst=[1, 2, 3]
...
>>> a=A()
>>> b=copy.deepcopy(a)
>>> a
<__main__.A instance at 0x403e3c8c>
>>> a.lst
[1, 2, 3]
>>> b.lst
[1, 2, 3]
>>> b.lst.append(4)
>>> b.lst
[1, 2, 3, 4]
>>> a.lst
[1, 2, 3, 4]
or even if you "could" copy instances
class X:
def __init__(self, filename = "/path/file")
self.file = file(filename, "w+")
def modifyByteAt(offset):
self.file.tell(offset)
self.file.write("X")
this is untested pseudocode, it should only give you an idea
hth, Daniel
ps:
question to all
what is a general approach to copy class instances?
write own method or is there some __magic__ attribute or
should one use pickle.dump?
Regards, Daniel
More information about the Python-list
mailing list