Padrão 프로토타입 및 Python
Este padrão de projeto determina que o próprio objeto é responsável pelo clonagem, facilitando assim o processo, uma vez que as classes podem possuir conteúdo que não pode ser copiado "de fora".
Python 코드 작성의 예
class SelfReferencingEntity:
def __init__(self):
self.parent = None
def set_parent(self, parent):
self.parent = parent
class SomeComponent:
def __init__(self, some_int, some_list_of_objects, some_circular_ref):
self.some_int = some_int
self.some_list_of_objects = some_list_of_objects
self.some_circular_ref = some_circular_ref
def __copy__(self):
# First, let's create copies of the nested objects.
some_list_of_objects = copy.copy(self.some_list_of_objects)
some_circular_ref = copy.copy(self.some_circular_ref)
# Then, let's clone the object itself, using the prepared clones of the
# nested objects.
new = self.__class__(
self.some_int, some_list_of_objects, some_circular_ref
)
new.__dict__.update(self.__dict__)
return new
def __deepcopy__(self, memo={}):
# First, let's create copies of the nested objects.
some_list_of_objects = copy.deepcopy(self.some_list_of_objects, memo)
some_circular_ref = copy.deepcopy(self.some_circular_ref, memo)
# Then, let's clone the object itself, using the prepared clones of the
# nested objects.
new = self.__class__(
self.some_int, some_list_of_objects, some_circular_ref
)
new.__dict__ = copy.deepcopy(self.__dict__, memo)
return new
Python은 "copy.copy"와 "copy.deepcopy"에 대한 프로토타입의 프로토타입 인터페이스를 제공합니다. A classe que desejar Personalizar estas cópias deve sobrescrever as funções "copy"e "deepcopy".
A função "copy.copy"é 고려 사항 "cópia rasa"e cria um novo objeto preenchendo-o com Referências para seus repivos itens no objeto original. "copy.deepcopy"는 반복적인 사용을 위해 사용됩니다.
참조
Padrões de Projeto (디오고 모레이라, 2020)
Mergulho nos Padrões de Projeto - v2020-1.14 (알렉산더 슈베츠, 2020)
copy in Python
Os codigos usados como exemplo foram retirados do livro Mergulho nos Padrões de Projeto.
Reference
이 문제에 관하여(Padrão 프로토타입 및 Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mchlexe/padrao-prototype-10m4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)