PROBLEM?? deepcopy

P

phil

I wrote the following to prove to myself that
deepcopy would copy an entire dictionary
which contains an instance of a class to
one key of another dictionary.
Note that after copying adict to ndict['x']
I delete adict.
Then ndict['x'] contains a good copy of adict.
works great.


class aclass:
def __init__(s):
s.anint = 123
aninstance = aclass()
adict = {}
adict['y'] = aninstance

ndict = {}
ndict['x'] = copy.deepcopy(adict)
del adict
print ndict
print ndict['x']['y']
print ndict['x']['y'].anint # this line prints 123
print

Then in the following code when I try to deepcopy
s.glob.objs I get following error
Note that s.glob.objs is a dictionary and I am
attempting to copy to a key of s.save, another dict,
just like above.
??????????
s.glob.objs may have several keys, the data for each
will be instance of classes like line and circle.
Those instances will have tkinter canvas objects in them.

class Graph:
def __init__(s):
class DummyClass: pass
s.glob = DummyClass()
s.glob.objs = {}
.. # here add some instance of objects like
.. # circles and lines to s.glob.objs
# instantiate dialog
s.DI = dialog(s.glob)

class dialog:
def __init__(s,glob):
s.glob = glob
s.save = {}

def proc(s):
cur = someint
s.save[cur] = copy.deepcopy(s.glob.objs)

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/local/lib/python2.3/lib-tk/Tkinter.py", line 1345, in __call__
return self.func(*args)
File "/home/phil/geo/g.py", line 303, in enter
else:s.proc()
File "/home/phil/geo/g.py", line 245, in proc
s.save[cur][k] = copy.deepcopy(s.glob.objs[k][0])
File "/usr/local/lib/python2.3/copy.py", line 179, in deepcopy
y = copier(x, memo)
File "/usr/local/lib/python2.3/copy.py", line 307, in _deepcopy_inst
state = deepcopy(state, memo)
File "/usr/local/lib/python2.3/copy.py", line 179, in deepcopy
y = copier(x, memo)
File "/usr/local/lib/python2.3/copy.py", line 270, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/lib/python2.3/copy.py", line 179, in deepcopy
y = copier(x, memo)
File "/usr/local/lib/python2.3/copy.py", line 307, in _deepcopy_inst
state = deepcopy(state, memo)
File "/usr/local/lib/python2.3/copy.py", line 179, in deepcopy
y = copier(x, memo)
File "/usr/local/lib/python2.3/copy.py", line 270, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/lib/python2.3/copy.py", line 206, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/lib/python2.3/copy.py", line 338, in _reconstruct
y = callable(*args)
File "/usr/local/lib/python2.3/copy_reg.py", line 92, in __newobj__
return cls.__new__(cls, *args)
TypeError: function() takes at least 2 arguments (0 given)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top