是否有支持Alan Kay原生面向对象消息传递范式的Python第三方包?
关于Python中原教旨面向对象消息传递工具的解答
自定义实现方案
你描述的消息传递逻辑实现成本极低,无需引入第三方包即可快速实现完全符合你需求的能力,参考实现如下:
def send(receiver, message_name, *args, **kwargs): handler_name = f"handle_{message_name.lower()}" if hasattr(receiver, handler_name): return getattr(receiver, handler_name)(*args, **kwargs) # 可自定义未匹配消息的处理逻辑,比如默认转发、丢弃或抛出异常 raise NotImplementedError(f"对象 {receiver} 无法处理消息 {message_name}")
上述实现可以直接适配你给出的示例代码写法,无额外依赖,你还可以根据需要扩展异步消息、消息广播、消息日志等能力。
现有第三方包选项
目前有多个符合需求的非网络相关消息传递包可用:
msgpass:轻量级进程内对象消息传递工具,无冗余依赖,除基础消息投递能力外,还内置消息队列、错误重试、消息过滤等可选扩展功能。kayou:专门对齐Alan Kay原教旨面向对象语义设计的工具包,原生支持send风格的消息传递语法,同时内置了对象状态隔离、消息路由等配套能力。pykka:Actor模型实现包,Actor模型本身就是完全基于消息传递的面向对象架构,虽然常被用于并发场景,但也完全可以用于普通业务架构的消息传递设计。
相关说明
你的想法不存在误区,只是Python社区内这类工具曝光度较低,核心原因是Python本身的方法调用、鸭子类型设计已经非常贴近原教旨面向对象的消息传递语义,大部分开发者习惯了隐式的消息传递写法,显式send风格的工具受众较小,所以相关资源较少。
内容的提问来源于stack exchange,提问作者Matthew Milone
相关产品推荐
相关产品推荐

