2010-07-15 35 views
7

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

7

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.

2

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.

+0

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

+2

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. –

Các vấn đề liên quan