티스토리 뷰

클래스의 인스턴스에서 깊은복사, 얇은복사에 대한 정의를 할 필요가 있다.


좀더 정확히는 copy 모듈을 이용할때 copy.copy(), copy.deepcopy() 이용할때 동작 코드를 구현할 수 있다.


__copy__ 는 copy.copy() 에 대한 정의이고


__deepcopy__ 는 copy.deepcopy() 에 대한 정의이다.



import copy


class Coo:
def __init__(self, info=None):
self.info = info if info else list()

def add(self, item):
self.info.append(item)

def remove(self, index):
self.info.pop(index)

def __copy__(self):
print("shallow copy")
return self

def __deepcopy__(self, memodict={}):
print("deep copy")
return Coo(copy.deepcopy(self.info))


댓글