有沒有像在其他語言中實現的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. 黑莓AppWorld - 描述語言
- 7. HTML:多語言元描述?
- 8. 其他語言與Python有什麼協同作用?需要建議
- 9. 描述RE的英語語言
- 10. 語言的語法描述Java
- 11. 哪種Python語言規則允許首先找到描述符?
- 12. HTTP1.1協議多語言
- 13. Python語言概述
- 14. 套接字描述符泄漏 - lsof無法識別協議?
- 15. 在Windows 7下的虛擬XP模式下的其他語言
- 16. 建築描述語言(ADL)的用法?
- 17. 的Python:__slots__和描述符
- 18. 更多描述性語言字符串佔位符?
- 19. 通用數據結構描述語言
- 20. 描述用正則表達式語言
- 21. 描述一種編程語言
- 22. 在線搜索Prolog語言描述
- 23. 如何在android模擬器中支持其他語言?
- 24. 如何在c#或其他語言中使用pop3或IMap協議?
- 25. 協調BAR描述符QNX IDE
- 26. 使用Three20與HTTP協議以外的其他協議
- 27. 延伸。在協議規定的委託與其他協議
- 28. atoi()其他語言
- 29. 「頁面描述語言」和「標記語言」
- 30. 瞭解Python描述符
[描述符協議](http://docs.python.org/ref/descriptors.html)與[裝飾模式]不同(http://www.python.org/dev/peps/ pep-0318 /)在Python中 - 我指的是能夠將對象實例變爲另一個對象的屬性,該屬性被「代理」爲動態。 – cdleary 2008-08-29 19:11:39