Паттерн Прототип (Prototype) в Python

Прототип — паттерн, порождающий объекты. Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.

import copy


class Prototype:

    def __init__(self):
        self.objects = {}

    def register(self, name, obj):
        self.objects[name] = obj

    def unregister(self, name):
        del self.objects[name]

    def clone(self, name, attrs):
        obj = copy.deepcopy(self.objects[name])
        obj.__dict__.update(attrs)
        return obj


class Human:
    pass


proto = Prototype()
proto.register("human", Human())

man = proto.clone('human', {'name': 'Igor'})
woman = proto.clone('human', {'name': 'Janna'})

print(type(man), man.name)
print(type(woman), woman.name)

В результате получим

<class '__main__.Human'> Igor
<class '__main__.Human'> Janna

 

Ссылка на основную публикацию