Tôi tiếp tục thấy mọi người viết trình bao bọc cho, nói một mô-đun được viết bằng ngôn ngữ X để sử dụng nó bằng ngôn ngữ Y. Tôi muốn biết những điều cơ bản của việc viết các trình bao bọc như vậy. Bắt đầu từ đâu? Câu hỏi của tôi ở đây là cụ thể hơn cho libgnokii, làm thế nào để tôi bắt đầu viết các ràng buộc python cho nó.Viết các ràng buộc và đóng gói
Trả lời
Bạn có thể bắt đầu đọc: extending python with c or c++ Và sau đó khi bạn quyết định quá phức tạp, bạn có thể xem swig hoặc có thể Boost.Python. ctypes cũng có thể hữu ích.
Tôi đã thực hiện gói thủ công các lớp C++ và tôi đã sử dụng swig. swig dễ sử dụng hơn nhiều, nhưng cuối cùng tôi muốn làm những thứ không dễ thực hiện (hoặc tôi quá lười biếng để tìm ra cách). Vì vậy, tôi đã kết thúc thực hiện gói bằng tay. Đó là một chút công việc nhưng nếu bạn biết một chút của C, nó rất khả thi.
Bạn có thể bắt đầu bằng cách tìm kiếm here để biết thông tin về việc mở rộng Python bằng C. Bạn có thể muốn suy nghĩ về cách dịch API của libgnokii thành thứ gì đó Pythonic trong khi bạn đang ở đó. Nếu bạn không muốn thực hiện nhiều công việc, bạn chỉ cần viết một trình bao bọc mỏng để dịch tất cả các lệnh gọi gnokii API thành các hàm Python.
- 1. Kích thước UILabelToFit và các ràng buộc
- 2. SWI-Prolog và các ràng buộc, thư viện CLP (FD)
- 3. Đóng gói và nén
- 4. Các quy tắc của generics và các ràng buộc loại
- 5. Xác định tên gói cho XSD chung với xjc và các ràng buộc
- 6. Ràng buộc các Procs
- 7. Tài sản và đóng gói
- 8. Ràng buộc FFI và DSL
- 9. Ràng buộc khóa trong Eclipse cho lệnh gói Maven
- 10. Ràng buộc Python Subversion có gói độc đáo với `pip`?
- 11. gói GDAL JAVA Ràng buộc và thư viện gốc trong một plugin SWT
- 12. Các trường hợp đối tượng ràng buộc với các bao đóng tĩnh
- 13. std :: ràng buộc một hàm ràng buộc
- 14. MySQL và Kiểm tra ràng buộc
- 15. Lắp ráp ràng buộc và chuyển hướng
- 16. jstree: ràng buộc chiều rộng
- 17. Có cách nào để xóa các ràng buộc khỏi tất cả các phần tử bị ràng buộc trên một sự kiện đóng biểu mẫu không?
- 18. postgres: ràng buộc kiểm tra và các giá trị null
- 19. Làm cách nào để kiểm tra các biến đóng bị ràng buộc trong javascript?
- 20. Ràng buộc cổng Python
- 21. Các ràng buộc chung về chức năng
- 22. Đối tượng đóng gói
- 23. Dependency Injection: Làm thế nào để cấu hình các ràng buộc giao diện cho gói
- 24. 'fileSystem' chỉ được phép cho các ứng dụng đóng gói và đây là ứng dụng được đóng gói cũ
- 25. Viết các ràng buộc Python cho mã C++ sử dụng OpenCV
- 26. Bit đóng gói mảng các số nguyên
- 27. HaiWay ràng buộc với các mụcControl
- 28. Trình đóng gói Adobe Flash iOS ném java.lang.OutOfMemoryError khi đóng gói các dự án lớn
- 29. Công văn động và ràng buộc
- 30. std :: hàm ràng buộc và quá tải
Làm cho mọi thứ Pythonic có nghĩa là viết toàn bộ thư viện như một mô-đun từ đầu? – tsudot
Không, không nhất thiết. Một ví dụ từ những gì tôi đã làm: Tôi đã có một lớp c + + mà tôi cần thiết để tạo một đối tượng trước khi tôi có thể sử dụng một hàm trên nó (trong trường hợp này, hàm nên là tĩnh). Thay vì làm cho người dùng mô-đun python đi qua các bước tương tự, tôi chỉ xây dựng trong một đối tượng của lớp đó trong phần mở rộng python của tôi và tiếp xúc hàm như một hàm trong mô-đun python, che giấu thực tế là nó thuộc về một lớp, không thực sự cần thiết. Vì vậy, sắp xếp làm sạch các giao diện một chút. –