有没有像在其他语言中实现的Python描述符协议?这似乎是一个很好的方式来增加模块化/封装而不会让你的包含类的实现变得更糟,但是我从来没有听说过任何其他语言中的类似事情。由于查找开销,是否可能缺少其他语言?其他语言的Python描述符协议模拟?
8
A
回答
4
我还没有听说过直接的等价物。你可能可以用宏实现同样的效果,尤其是像Lisp这样具有非常强大的宏的语言。
如果其他语言开始合并类似的东西,因为它非常强大,我不会感到惊讶。
0
通过为属性指定getter/setter方法,Ruby和C#都可以轻松地创建访问器,这与Python非常相似。但是,这并不是让您自然而然地允许您按照Python允许的方式在另一个类中编写这些方法的代码。在实践中,我不确定这有多重要,因为每次我看到通过描述符协议定义的属性都在同一个类中实现。
编辑:补充我的阅读障碍(我的意思是粗心阅读)。出于某种原因,我总是将“描述符”理解为“修饰符”,反之亦然,即使我是一个打字者也是如此。我会留下我的帖子,因为它具有有效的信息,尽管这些信息与问题完全无关。
术语“装饰器”本身实际上是着名的“设计模式”书中描述的设计模式的名称。维基百科文章包含许多用于装饰器使用的不同编程语言的示例:http://en.wikipedia.org/wiki/Decorator_pattern
然而,该文章中的装饰器是面向对象的;他们有实现预定义接口的类,它允许另一个现有类以某种方式表现不同,等等。Python装饰器通过在运行时用另一个函数替换一个函数来起作用,允许你有效地修改/替换该函数,插入代码等。
这在Java世界中称为面向方面的编程,而AspectJ Java编译器允许您执行这些类型的事情并将您的AspectJ代码(它是Java的超集)编译为Java字节码。
我不熟悉C#或Ruby知道他们的装饰器版本是什么。
相关问题
- 1. 符合其他协议绑定协议
- 2. OData描述语言
- 3. python描述符协议函数原型声明
- 4. 正式描述协议的方式
- 5. 如何使用编程语言模拟aloha协议?
- 6. HTML:多语言元描述?
- 7. 其他语言与Python有什么协同作用?需要建议
- 8. 描述RE的英语语言
- 9. 哪种Python语言规则允许首先找到描述符?
- 10. HTTP1.1协议多语言
- 11. Python语言概述
- 12. 套接字描述符泄漏 - lsof无法识别协议?
- 13. 在Windows 7下的虚拟XP模式下的其他语言
- 14. 建筑描述语言(ADL)的用法?
- 15. 更多描述性语言字符串占位符?
- 16. 描述一种编程语言
- 17. 描述用正则表达式语言
- 18. 通用数据结构描述语言
- 19. 如何在android模拟器中支持其他语言?
- 20. 协调BAR描述符QNX IDE
- 21. 使用Three20与HTTP协议以外的其他协议
- 22. 延伸。在协议规定的委托与其他协议
- 23. “页面描述语言”和“标记语言”
- 24. “教”Python其他语言(TTS说...)HowTo?
- 25. FindBugs有争议的描述
- 26. 多语言支持和协议表格
- 27. 用于描述编程语言语法的术语是什么?
- 28. Clojure中来自其他语言的功能概述CL
- 29. 为什么Objective-c协议采用其他协议?
- 30. LDAP协议与其他目录服务协议
[描述符协议](http://docs.python.org/ref/descriptors.html)与[装饰模式]不同(http://www.python.org/dev/peps/ pep-0318 /)在Python中 - 我指的是能够将对象实例变为另一个对象的属性,该属性被“代理”为动态。 – cdleary 2008-08-29 19:11:39