Có điều gì đó giống như giao thức mô tả Python được triển khai bằng các ngôn ngữ khác không? Nó có vẻ giống như một cách tốt đẹp để tăng tính mô-đun/đóng gói mà không làm đầy triển khai lớp chứa của bạn, nhưng tôi chưa bao giờ nghe nói về một điều tương tự trong bất kỳ ngôn ngữ nào khác. Nó có khả năng vắng mặt từ các ngôn ngữ khác vì phí tra cứu không?Giao thức mô tả Python tương tự trong các ngôn ngữ khác?
Trả lời
Tôi cũng chưa nghe nói về tương đương trực tiếp. Bạn có thể có thể đạt được hiệu ứng tương tự với các macro, đặc biệt là trong một ngôn ngữ như Lisp có macro cực kỳ mạnh mẽ.
Tôi sẽ không ngạc nhiên nếu các ngôn ngữ khác bắt đầu kết hợp thứ gì đó tương tự vì nó rất mạnh mẽ.
Cả Ruby và C# đều dễ dàng cho phép bạn tạo các trình truy cập bằng cách chỉ định các phương thức getter/setter cho một thuộc tính, giống như trong Python. Tuy nhiên, điều này không được thiết kế để tự nhiên viết mã cho các phương thức này trong một lớp khác theo cách Python cho phép. Trong thực tế, tôi không chắc bao nhiêu điều này quan trọng, vì mỗi lần tôi thấy một thuộc tính được định nghĩa thông qua giao thức mô tả nó được thực hiện trong cùng một lớp.
EDIT: Darn chứng khó đọc của tôi (theo đó tôi có nghĩa là đọc sách bất cẩn). Đối với một số lý do tôi đã luôn luôn đọc "descriptor" là "decorator" và ngược lại, ngay cả khi tôi là người gõ cả hai. Tôi sẽ để lại bài viết của tôi nguyên vẹn vì nó có thông tin hợp lệ, mặc dù thông tin hoàn toàn không liên quan gì đến câu hỏi này.
Thuật ngữ "trang trí" chính là tên của mẫu thiết kế được mô tả trong sách "Mẫu thiết kế" nổi tiếng. Bài viết trên Wikipedia chứa nhiều ví dụ về các ngôn ngữ lập trình khác nhau của việc sử dụng trang trí: http://en.wikipedia.org/wiki/Decorator_pattern
Tuy nhiên, các trang trí trong bài viết đó hướng đối tượng; Các lớp trang trí của Python hoạt động theo cách chức năng bằng cách thay thế một hàm trong thời gian chạy với một hàm khác, cho phép bạn sửa đổi/thay thế hiệu quả hàm đó, chèn mã, v.v.
Điều này được biết đến trong thế giới Java là lập trình hướng AspectJ, và trình biên dịch Java AspectJ cho phép bạn thực hiện các loại điều này và biên dịch mã AspectJ của bạn (một phần của Java) thành mã Java bytecode.
Tôi không đủ quen thuộc với C# hoặc Ruby để biết phiên bản trang trí của họ sẽ là gì.
- 1. Ngôn ngữ mô tả chung Cấu trúc dữ liệu
- 2. Đặc tả ngôn ngữ PHP?
- 3. Ngữ pháp không có ngữ cảnh mô tả các biểu thức chính quy?
- 4. Có một đặc tả ngôn ngữ Python không?
- 5. Tự động hóa giao diện người dùng iOS cho các ngôn ngữ khác nhau
- 6. Xây dựng một mô hình ngôn ngữ tự nhiên, có thể chữa lỗi chính tả
- 7. Phần nào của Đặc tả Ngôn ngữ Java mô tả hành vi của các vararg bị bỏ qua?
- 8. StyleCop cho các ngôn ngữ khác
- 9. Có các ngôn ngữ khác có mục đích tương tự như XML không?
- 10. "Dạy" Python các ngôn ngữ khác (TTS nói ...) HowTo?
- 11. Các công cụ để mô phỏng giao thức
- 12. Sự cố khi hiểu suy luận kiểu C# như được mô tả trong đặc tả ngôn ngữ
- 13. Tìm kiếm ngôn ngữ mô tả gói (Tốt nhất là với triển khai A # C)
- 14. Gửi tin nhắn từ các ngôn ngữ khác đến hạt nhân IPython
- 15. dịch một ngôn ngữ này sang ngôn ngữ khác?
- 16. Python và Java để xử lý ngôn ngữ tự nhiên
- 17. Tương đương mục tiêu-C của đặc tả ngôn ngữ Java hoặc tiêu chuẩn C++?
- 18. Tương đương với bảng tính Scala IDE bằng các ngôn ngữ khác?
- 19. PHP tương đương với một biến tĩnh trong các ngôn ngữ khác là gì?
- 20. Phân tách (mô đun) bằng các ngôn ngữ chức năng
- 21. Tạo ngôn ngữ tự nhiên trong PHP
- 22. Trình tạo ngôn ngữ tự nhiên cho các ngày (Java)
- 23. Giao diện bằng ngôn ngữ động?
- 24. Đồng thời kiểu Erlang cho các ngôn ngữ khác
- 25. Kiểm tra giao điểm của hai ngôn ngữ thông thường
- 26. atoi() với các ngôn ngữ khác
- 27. Fix Python Unicode Lỗi gây ra bởi ngôn ngữ khác
- 28. Tại sao ngôn ngữ Python không có phương thức writeln()?
- 29. MFMailComposeViewController bằng các ngôn ngữ khác?
- 30. strtotime Với các ngôn ngữ khác nhau?
[Giao thức mô tả] (http://docs.python.org/ref/descriptors.html) không giống với [mẫu trang trí] (http://www.python.org/dev/peps/ pep-0318 /) bằng Python - Tôi đang đề cập đến khả năng tạo một cá thể đối tượng thành thuộc tính của đối tượng khác được "ủy nhiệm" động. – cdleary