美文网首页
python中的观察者模式的实现-Signal#漂亮代码

python中的观察者模式的实现-Signal#漂亮代码

作者: deeper | 来源:发表于2015-09-13 07:45 被阅读260次
    from django.contrib.auth.signals import user_logged_in
    
    def update_last_login(sender, user, **kwargs):
        """
        A signal receiver which updates the last_login date for
        the user logging in.
        """
        user.last_login = timezone.now()
        user.save(update_fields=['last_login'])
    user_logged_in.connect(update_last_login)
    
    #signals.py
    from django.dispatch import Signal
    user_logged_in = Signal(providing_args=['request', 'user'])
    
    也可以
    from django.dispatch import receiver
    @receiver(user_logged_in)
    def update_last_login(sender, user, **kwargs):
          pass
    
    

    可以继续参考网上其他博文12, 或者pydispatcher源代码

    iOS中有类似的KVO和Notification方法, 我对notification的印象深刻,曾大量运用。我认识这可能是比异步回调更值得大规模推广的编程方法。我会期待着以后的编程语言在多线程,多进程,通知模式,松耦合上做出更多创新。如果我们把一段代码赋予的对象当做一种生命体的话,我们希望这些生命体之间可以对话。

    记得几年前在学校做研究时,我当时就想把一个数理模型变成有社会参与者的multi-agent模型,后来未果,导致后来竟然转了行。我们能预见,并且偏好于对话机制。完全可以把虚拟世界中的对象也可以理解为实体,让它们产生对话,从而自动完成一些任务,完成对于未知的发现。

    也可以想象,之后的python可能会原生支持内部的观察者模式。

    相关文章

      网友评论

          本文标题:python中的观察者模式的实现-Signal#漂亮代码

          本文链接:https://www.haomeiwen.com/subject/ybnpcttx.html