python-3.x - 在python中实现一个观察者类
问题描述
我正在创建一个投标系统,学生可以在其中登录系统并通过 TKinter UI 请求导师并签署合同。我已经成功地做到了这一点。但现在我需要执行以下操作,
“当学生或导师登录系统时,如果有一个月内到期的合同,系统会通知用户。”
我在尝试实现这个功能时遇到了麻烦,因为我觉得这需要一个观察者,而且我一辈子都无法理解观察者设计模式。创建调用合同并确定哪个合同到期的方法没有问题,但我似乎无法弄清楚如何使用观察者来显示它。我可以得到一些指导吗?
作为参考,这是获取所有在一个月内到期的合同的方法。
def expiring_contracts(self,username):
user_contracts = self.all_contracts_by_user(username)
expiring_contracts = []
for i in user_contracts:
time_string = i["expiryDate"]
time_datetime = datetime.strptime(time_string,'%Y-%m-%dT%H:%M:%S.%f')
one_month = datetime.now() + dateutil.relativedelta.relativedelta(months=1)
if time_datetime < one_month:
expiring_contracts.append(i)
return expiring_contracts
self.all_contracts_by_user 是该类中的另一个方法,用于获取该用户的所有合同。我必须为此实现一个设计模式。
解决方案
推荐阅读
- xamarin - 将 Xamarin.Forms 项目从 4.2x 更新到 4.4 后如何修复 Java.Lang.ClassNotFoundException?
- javascript - 重新排序某些元素后如何重置 ng-repeat 块?
- sql - 在 Oracle (Column_A,Column_B) IN (M,M) 中将 IN 与多个值一起使用
- node.js - 当接受预订状态时,我如何重定向指令?暮光之城
- css - 删除过滤器模糊css周围的暗边框
- excel - 将筛选视图从 PowerPivot 导出到 Excel
- r - 使用 data.table 计算广告库存
- go - dup1.go 中多余的“D”从何而来?
- javascript - 使用 axios vuejs 下载的 Excel 文件损坏
- c - 动态内存分配器