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, **kwargs):
import copy
obj = copy.deepcopy(self.objects.get(name))
obj.__dict__.update(kwargs)
return obj
class A:
def __str__(self):
return 'i am A'
def main():
a = A()
setattr(a,'e',10)
prototype = Prototype()
prototype.register('a', a)
b = prototype.clone('a', e=1, f=2, g=3)
print(a)
print(a.e)
print(b.e)
print(b.f)
print(b.g)
if __name__ == '__main__':
main()
网友评论