Prototype pattern (Python recipe)

来源:互联网 发布:配音视频软件 编辑:程序博客网 时间:2024/06/18 06:37

原文链接:http://code.activestate.com/recipes/86651-prototype-pattern/

http://dongweiming.github.io/python-pototype.html

from copy import deepcopyclass Prototype:    def __init__(self):        self._objs = {}            def registerObject(self, name, obj):        """        register an object.        """        self._objs[name] = obj            def unregisterObject(self, name):        """unregister an object"""        del self._objs[name]            def clone(self, name, **attr):        """clone a registered object and add/replace attr"""        obj = deepcopy(self._objs[name])        obj.__dict__.update(attr)        return obj    

if __name__ == '__main__':    class A:        pass    a=A()    prototype=Prototype()    prototype.registerObject("a",a)    b=prototype.clone("a",a=1,b=2,c=3)    # 这里会返回对象a    print(a)    # 这里的对象其实已经被修改成(1, 2, 3)    print(b.a, b.b, b.c)


0 0
原创粉丝点击