copy construtor question
Chris Rebert
clp2 at rebertia.com
Fri Aug 28 20:47:51 EDT 2009
On Fri, Aug 28, 2009 at 11:38 AM, xiaosong xia<xiaosongxia at yahoo.com> wrote:
> Hi all,
>
> I am trying to define a class with copy constructor as following:
>
> class test:
>
> def __init__(self, s=None):
>
> self=s
Python uses call-by-object
(http://effbot.org/zone/call-by-object.htm), so reassigning `self`
does not affect the object outside of the body of the method. It is
(practically) impossible to reassign `self` in the way and with the
effect you're trying to do; that is, you never change what `self`
points to from the outside world's perspective, you can only modify
the object it already points at.
<snip>
> 1. Can 'self ' be a class attribute?
Doing this would make no sense.
> 2. How to make a copy constructor?
Since Python lacks overloading based on parameter types, generally one
does it the other way around and instead provides a method that
produces a copy of the object. For example:
class Point(object):
def __init__(self, x, y):
self. x = x
self.y = y
def copy(self):
return Point(self.x, self.y)
Cheers,
Chris
--
http://blog.rebertia.com
More information about the Python-list
mailing list