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)
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
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)