Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在python中实现一个观察者类_Python 3.x_Python Requests_Observer Pattern - Fatal编程技术网

Python 3.x 在python中实现一个观察者类

Python 3.x 在python中实现一个观察者类,python-3.x,python-requests,observer-pattern,Python 3.x,Python Requests,Observer Pattern,我正在创建一个招标系统,学生可以登录到一个系统,并通过TKinter用户界面请求导师和签署合同。我成功地做到了这一点。但现在我被要求做以下几件事 当学生或导师登录到系统时,如果合同将在一个月内到期,系统应通知用户 我在尝试实现这一特性时遇到了困难,因为我觉得这需要一个观察者,而我不能对观察者的设计模式了如指掌。我在创建调用契约并确定哪个契约到期的方法方面没有问题,但我似乎不知道如何使用观察者来显示它。我能得到一些指导吗 作为参考,这是一种获取一个月内到期的所有合同的方法 def expi

我正在创建一个招标系统,学生可以登录到一个系统,并通过TKinter用户界面请求导师和签署合同。我成功地做到了这一点。但现在我被要求做以下几件事

当学生或导师登录到系统时,如果合同将在一个月内到期,系统应通知用户

我在尝试实现这一特性时遇到了困难,因为我觉得这需要一个观察者,而我不能对观察者的设计模式了如指掌。我在创建调用契约并确定哪个契约到期的方法方面没有问题,但我似乎不知道如何使用观察者来显示它。我能得到一些指导吗

作为参考,这是一种获取一个月内到期的所有合同的方法

    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
def到期合同(self,用户名):
user\u contracts=self.all\u contracts\u by\u user(用户名)
到期合同=[]
对于用户合同中的i:
时间字符串=i[“到期日”]
time\u datetime=datetime.strtime(时间字符串,%Y-%m-%dT%H:%m:%S.%f')
一个月=datetime.now()+dateutil.relativedelta.relativedelta(月=1)
如果时间\日期时间<一个月:
合同到期。附加(i)
返回到期的合同

self.all\u contracts\u by\u user是此类中的另一个方法,该方法获取该用户的所有合同。我必须为此实现一个设计模式。

为什么需要观察者?这是登录时的静态检查。检查所有课程,如果一个课程过期,则直接登录用户-如果是:显示弹出窗口…我这样做只是因为作业要求我在作业中至少实现一种设计模式。我花了相当多的时间思考我可以在作业中实现哪些设计模式,我完全迷茫了,所以我决定Observer可能是最有意义的。