Pythonでは、selfとcopyはオブジェクト指向プログラミングの重要な概念です。
selfとは?
selfは、Pythonのクラス内で使用される特別な変数で、現在のインスタンスを参照します。これは、メソッドがそのオブジェクトの属性や他のメソッドにアクセスできるようにするために必要です。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
return "吠えたのは、" + self.name
上記の例では、self.nameはDogクラスのインスタンスのname属性を参照します。
copyとは?
Pythonのcopyモジュールは、オブジェクトの浅いコピー(shallow copy)と深いコピー(deep copy)を作成するための関数を提供します。これらの関数は、オブジェクトの複製を作成するときに便利です。
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 []
上記の例では、copy.deepcopy(a)はaの深いコピーを作成します。これにより、aとbは独立したオブジェクトとなり、一方を変更しても他方に影響を与えません。
まとめ
Pythonのselfとcopyは、オブジェクト指向プログラミングとデータ操作において重要な役割を果たします。これらの理解は、効率的で読みやすいコードを書くために不可欠です。