Pythonでは、クラスオブジェクトをコピーするためにはcopy
モジュールを使用します。このモジュールにはcopy()
とdeepcopy()
の二つの関数があります。
copy()関数
copy()
関数は、オブジェクトの「浅いコピー」を作成します。これは、元のオブジェクトとコピーされたオブジェクトが同じ参照を共有することを意味します。
import copy
class A:
def __init__(self):
self.x = 0
a = A()
b = copy.copy(a)
a.x = 13
print(a.x) # 13
print(b.x) # 0
deepcopy()関数
一方、deepcopy()
関数は、オブジェクトの「深いコピー」を作成します。これは、元のオブジェクトとコピーされたオブジェクトが全く別の参照を持つことを意味します。
import copy
class A:
def __init__(self):
self.x = 0
self.y = []
a = A()
b = copy.deepcopy(a)
a.x = 13
a.y.append(0)
print(a.x, a.y) # 13 [0]
print(b.x, b.y) # 0 []
このように、Pythonのcopy
モジュールを使用することで、クラスオブジェクトのコピーを簡単に作成することができます。.