zoukankan      html  css  js  c++  java
  • 原型模式(python)

    原型模式也叫克隆模式,通过拷贝自身的属性来创建一个新的对象,基本方法就是调用copy模块下的 (浅拷贝)copy() 和(深拷贝)deepcopy()

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    # prototype.py
    # author baiyifengyun
    import copy
    from datetime import date
    
    
    """
    原型模式:克隆羊多莉
    
    """
    
    
    class Prototype:
    
        def __init__(self):
            self._objects = {}
    
        def register_object(self, name, obj):
            self._objects[name] = obj
    
        def unregister_object(self, name):
            del self._objects[name]
    
        def clone(self, name, **attrs):
            obj = copy.deepcopy(self._objects.get(name))
            obj.__dict__.update(attrs)
            return obj
    
    
    class Sheep:
        def __init__(self):
            self.name = '多莉'
            self.birthday = date.fromtimestamp(132887776)
    
        def showInfo(self):
            return f'我是{self.name},出生于{self.birthday}'
    
    
    def main():
        s = Sheep()
        prototype = Prototype()
        prototype.register_object('s', s)
        s1 = prototype.clone('s')
        s1.name = '多莉莉'
        s1.birthday = date.fromtimestamp(1439876233)
        print('原型体:', s.showInfo())
        print('克隆体为', s1.showInfo())
    
    
    if __name__ == "__main__":
        main()
    
    

    结果为:





  • 相关阅读:
    hdu-4638
    一个简单的询问
    CoderForces-617B
    HYSBZ-2002弹飞绵羊
    邻接表
    CoderForces-913-C
    CoderForces-913D
    CoderFocers-620C
    CoderForces-375D
    HDU-6119
  • 原文地址:https://www.cnblogs.com/baiyifengyun/p/14209291.html
Copyright © 2011-2022 走看看