__new__ to create copy

F. GEIGER fgeiger at datec.at
Fri Feb 6 05:48:01 EST 2004


I do object copies this way:

import copy

a = A()
aa = copy.copy(a)

or

aa = copy.deepcopy(a)

You can wrap this up into a method of course, which then can decide whether
to do a deep copy or not.

HTH
Franz GEIGER


"Uwe Mayer" <merkosh at hadiko.de> schrieb im Newsbeitrag
news:bvvprg$81b$1 at news.rz.uni-karlsruhe.de...
> Hi,
>
> I want to create a copy of an object from out of its base class:
>
> class A(object):
>   def copy(self):
> ...
>
> class B(A):
> ...
>
> >>> b = B()
> >>> b.copy()
>
> I'm not sure how to do this:
>
> def copy(self):
>     cpy = self.__new__(self.__class__)
>     return cpy
>
> seems not to call the constructor __init__().
>
> How is such a thing done correctly? Where is the exact difference between
> __new__ and __init__?
>
>
> Thanks
> Uwe





More information about the Python-list mailing list