Copy constructors
Joal Heagney
s713221 at student.gu.edu.au
Fri Aug 10 06:01:57 EDT 2001
Alex Martelli wrote:
>
> "David Smith" <drs at labs.agilent.com> wrote in message
> news:3B72DCBA.C99465BC at labs.agilent.com...
> ...
> > class I have at hand, __init__ does some real work, which I want to
> > bypass -- I want to clone the results of that work. I don't want to
> ...
> > Is there a way for __copy__ to create a bare object of the same class,
> > which it can proceed to populate?
>
> Piece of cake:
>
> class Fleep:
> def __init__(self, x, y, z):
> print 'lots',x,'of',y,'work',z
> def __copy__(self):
> class Temp: pass
> newbie = Temp()
> newbie.__class__=self.__class__
> print "very little work"
>
> Alex
And adding onto that an automatic copy of the instance's __dict__ -->
>>> import copy
>>> class Fleep:
... def __init__(self,x,y,z):
... print 'lots',x,'of',y,'work',z
... self.x = x
... self.y = y
... self.z = z
... def __copy__(self):
... class Temp: pass
... newbie = Temp()
... newbie.__class__ = self.__class__
... newbie.__dict__ = copy.deepcopy(self.__dict__)
... print "very little work"
... return newbie
I LOVE this language. Alex, you're empty class trick just made it into
my private python scrap-book.
--
Joal Heagney is: _____ _____
/\ _ __ __ _ | | _ ___ |
/__\|\ || ||__ |\ || |___|/_\|___] |
/ \ \_||__ ||___| \_|! | | \ \ !
More information about the Python-list
mailing list