home changes contents help options

242:オブジェクトを複製する

オブジェクトを複製する汎用的な手段は copy モジュールを使用すること、です。copy 関数は浅いコピー (shallow copy) を、 deepcopy 関数は深いコピー (deep copy) を行います。

>>> import copy
>>> a = [[1, 1], [2, 2], [3, 3]]
>>> b = copy.copy(a)
>>> c = copy.deepcopy(a)
>>> a[0].append(9)
>>> a
[[1, 1, 9], [2, 2], [3, 3]]
>>> b
[[1, 1, 9], [2, 2], [3, 3]]
>>> c
[[1, 1], [2, 2], [3, 3]]

自作クラスもこの copy モジュールでコピーできます。より詳しい情報はライブラリリファレンスの copy にあります。

>>> class A(object):
...   def __init__(self, a):
...     self.a = a
...
>>> a = A(1)
>>> b = copy.copy(a)
>>> a.a
1
>>> b.a
1

関連