使用原型模式快速创建工作周报
import copy
class Prototype:
"""原型接口"""
def clone(self):
# 这里用深拷贝,这意味着对象及其所有引用的对象都将被复制
# 若不希望复制对象内部的引用类型,copy.copy()来执行浅拷贝
return copy.deepcopy(self)
class WeeklyLog(Prototype):
"""具体原型"""
def __init__(self, name=None, date=None, content=None):
self.name = name
self.date = date
self.content = content
客户端代码
def display_log(log: WeeklyLog):
print("###周报###")
print(f"姓名:{log.name}")
print(f"周次:{log.date}")
print(f"内容:{log.content}")
print("#" * 10, "\n")
log_lastweek = WeeklyLog("张三", "第12周", "这周工作很忙,每天加班!")
log_thisweek = log_lastweek.clone()
log_thisweek.date = "第13周"
display_log(log_lastweek)
display_log(log_thisweek)
print(log_lastweek is log_thisweek) # 输出 False,表示是不同的对象
输出结果
###周报###
姓名:张三
周次:第12周
内容:这周工作很忙,每天加班!
##########
###周报###
姓名:张三
周次:第13周
内容:这周工作很忙,每天加班!
##########
False