Python协议方法与JavaScript的代理对象

Python的协议方法在大多数情况下被称为魔法方法,当用户重载此类方法的时候,那么被重载的方法将在对应的情况下被调用。我们可以把协议方法理解成开发者和Python语法之间的接口,通过修改接口协议我们能够更深入地掌控代码的运行。

这里有个好玩的协议方法,__all__,它可以控制 from xxx import * 的操作。

JavaScript代理对象Proxy用于修改某些操作的默认行为,Proxy对象可以拦截用户对目标对象的访问。

由此可见,协议方法与Proxy都能够拦截用户对目标的操作。

利用这种特性,当我们在定义一个底层对象的时候,我们可以拦截对属性的操作,然后编写我们希望的操作代码。这样实现了封装的目的,简化了高层的代码结构,同时达到了面向切面的效果。

吐槽一下,在很长的一段时间里,我觉得Python的协议方法不是一个很好理解的概念,而且看的文章大多都是在堆某个协议方法的执行时机。但是在学习JavaScript的Proxy时,稍微花点时间就明白了,然后就迁移理解了Python协议方法,很微妙。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容