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

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可能会原生支持内部的观察者模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI下拉刷新模糊效果A...
    袁俊亮技术博客阅读 11,962评论 9 105
  • 今年暑假,女儿放假3周,嚷着健身,总不放心小姑娘一个人去到那个荷尔蒙洋溢的地方,于是母爱伟大,亲自陪她锻炼。健身对...
    海船子阅读 354评论 1 0
  • 都说脾气好,心地善良的人会人见人爱,不可否认,确实如此,然而,这份喜爱也仅仅是不熟悉人的客套话,亲近人的不操心,自...
    a4e618d29d0f阅读 602评论 0 0
  • 今天是2017年6月29日,明天就是月底了,都不想说时间过的真快这句话了。 6月经历了一些事情,知道并明了了自己在...
    飞飞来啦阅读 241评论 1 1
  • 我们已经能创建一个dict,用于表示名字和成绩的对应关系: 那么,如何根据名字来查找对应的成绩呢? 可以简单地使用...
    OoYoO阅读 207评论 0 0