Reputation: 68436
I'm reviewing some old python code and came accross this 'pattern' frequently:
class Foo(object):
def __init__(self, other = None):
if other:
self.__dict__ = dict(other.__dict__)
Is this how a copy constructor is typically implemented in Python?
Upvotes: 6
Views: 2730
Reputation: 4723
Note that the attributes aren't copied, they are shared.
>>> a = Foo()
>>> a.x=[1,2,3]
>>> b = Foo(a)
>>> b.x[2] = 4
>>> a.x
[1, 2, 4]
Upvotes: 5
Reputation: 40394
This is a way to copy all attributes from one object to another one. However note that:
__init__
method may have any type (not the same type as the object being created).Upvotes: 4