copying classes?

Hans Nowak hans at zephyrfalcon.org
Thu Dec 30 17:02:20 EST 2004


Jeff Epler wrote:

> Here's an example of attempting to deepcopy a class:
> 
>>>>class X: pass
> 
> ... 
> 
>>>>import copy
>>>>X is copy.deepcopy(X)
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "/usr/lib/python2.2/copy.py", line 179, in deepcopy
>     raise error, \
> copy.Error: un-deep-copyable object of type <type 'class'>

Weird.  I get (Python 2.3.4):

 >>> class X: pass
...
 >>> import copy
 >>> X is copy.deepcopy(X)
True

However:

 >>> class Foo:
...     def bar(self, x, y, z): pass
...
 >>> import copy
 >>> FooCopy = copy.deepcopy(Foo)
 >>> FooCopy
<class __main__.Foo at 0x0142FE70>
 >>> Foo
<class __main__.Foo at 0x0142FE70>

It appears it doesn't copy the class at all, you just get the same class 
back.

-- 
Hans Nowak
http://zephyrfalcon.org/




More information about the Python-list mailing list