1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
''' Prototype '''
import copy
class Prototype: def __init__(self): self._objects = {}
def register_object(self, name, obj): """Register an object""" self._objects[name] = obj
def unregister_object(self, name): """Unregister an object""" del self._objects[name]
def clone(self, name, **attr): """Clone a registered object and update inner attributes dictionary""" obj = copy.deepcopy(self._objects.get(name)) obj.__dict__.update(attr) return obj
def main(): class A: def __str__(self): return "I am A"
a = A() prototype = Prototype() prototype.register_object('a', a) b = prototype.clone('a', a=1, b=2, c=3)
print(a) print(b.a, b.b, b.c)
if __name__ == '__main__': main()
|
近期评论