「オブジェクトをコピーすることでオブジェクトを作る」です。
Pythonのビルトイン機能で実現できるため、その紹介に留めます。
Point
クラスをコピーします。import copy
def main():
point1 = Point(2, 3)
point2 = copy.deepcopy(point1)
print("x", point1.x, point2.x)
print("y", point1.y, point2.y)
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
if __name__ == "__main__":
main()
省略
copy.deepcopy(オブジェクト)
でオブジェクトをコピーすることができます。
ちなみにですが、point1 = point2
の用に代入では エイリアスが作られるだけでコピーにはなりません。
main()
文を以下の用に改変することで検証してみました。
point1 = Point(2, 3)
point2 = point1
point1.x = 5
print(point1.x) # => 5
print(point2.x) # => 5
このように、変更していないはずのpoint2も値が変わってしまいます。
copy.deepcopy()
で書くことにより、オブジェクトをコピーすることができます。