Ce este
Șablonul Prototip (Prototype) creează obiecte noi prin clonarea unui obiect existent, în loc să le construiască de la zero. Pregătești un obiect ca model, apoi îl copiezi și schimbi doar ce diferă.
Singurul lucru la care trebuie să fii atent în Python: o copie superficială (copy.copy) împarte listele și dicționarele din interiorul obiectului — copy.deepcopy le copiază și pe ele, așa că clona este cu adevărat independentă.
Exemplu: un șablon de document
Șablonul conține părțile care se repetă în fiecare document. clone() folosește copy.deepcopy — inclusiv pentru lista de etichete — așa că modificarea copiei lasă șablonul neatins.
Clonează, apoi schimbă diferența
Raportul a primit un titlu nou și o etichetă în plus, iar șablonul are în continuare doar ['draft'] — pentru că copy.deepcopy a copiat lista de etichete. O copie superficială cu copy.copy ar fi împărțit-o, iar șablonul s-ar fi schimbat și el.
Ieșire: program Python complet
import copy
from dataclasses import dataclass, field
@dataclass
class Document:
title: str
footer: str
tags: list[str] = field(default_factory=list)
# clone copiază documentul — inclusiv lista de etichete.
def clone(self) -> "Document":
return copy.deepcopy(self)
template = Document(
title="Untitled",
footer="PromptCookbook 2026",
tags=["draft"],
)
report = template.clone()
report.title = "Yearly Report"
report.tags.append("finance")
print("șablon:", template.title, template.tags)
print("clonă: ", report.title, report.tags)
Când să-l folosești
Folosește-l când obiectele noi sunt în mare parte copii ale unuia pregătit — documente dintr-un șablon, entități de joc dintr-un generator, date de test dintr-o configurație pregătită (fixture).
Renunță la el când obiectele sunt ușor de construit de la zero sau nu conțin nimic partajat. Pentru un obiect simplu, cu valori obișnuite, o copie superficială cu copy.copy este deja o copie completă.
Avantaje și dezavantaje
Avantaje: crearea ieftină a obiectelor preconfigurate; șablonul documentează valorile implicite; fără cod de inițializare repetat.
Dezavantaje: copierea se poate greși ușor, în mod subtil — o copie superficială în locul greșit leagă pe ascuns clona de original printr-o listă sau un dicționar comun; cu timpul, clonele se îndepărtează pe nesimțite de șablon.