Tôi đã tìm kiếm một câu trả lời đơn giản cho câu hỏi này, nhưng có vẻ như tôi không thể tìm thấy câu trả lời. Tôi muốn tránh xa bất kỳ thư viện bên ngoài nào chưa được bao gồm trong Python 2.6/2.7.Nhập hằng số từ tệp .h vào python
tôi có 2 c tập tin tiêu đề tương tự như sau:
//constants_a.h
const double constant1 = 2.25;
const double constant2 = -0.173;
const int constant3 = 13;
...
//constants_b.h
const double constant1 = 123.25;
const double constant2 = -0.12373;
const int constant3 = 14;
...
Và tôi có một lớp python mà tôi muốn nhập khẩu các hằng số này thành:
#pythonclass.py
class MyObject(object):
def __init(self, mode):
if mode is "a":
# import from constants_a.h, like:
# self.constant1 = constant1
# self.constant2 = constant2
elif mode is "b":
# import from constants_b.h, like:
# self.constant1 = constant1
# self.constant2 = constant2
...
tôi có mã c trong đó sử dụng các hằng số là tốt, và tương tự như này:
//computations.c
#include <stdio.h>
#include <math.h>
#include "constants_a.h"
// do some calculations, blah blah blah
Làm thế nào tôi có thể nhập các hằng số từ tập tin header vào lớp Python?
Lý do cho tệp tiêu đề constants_a.h và constants_b.h là tôi đang sử dụng python để thực hiện hầu hết các phép tính bằng cách sử dụng hằng số, nhưng tại một thời điểm tôi cần sử dụng C để thực hiện các phép tính tối ưu hơn. Tại thời điểm này tôi đang sử dụng ctypes để bọc mã c vào Python. Tôi muốn giữ các hằng số cách xa mã chỉ trong trường hợp tôi cần phải cập nhật hoặc thay đổi chúng, và làm cho mã của tôi sạch hơn nhiều. Tôi không biết nếu nó giúp để lưu ý tôi cũng đang sử dụng NumPy, nhưng khác hơn thế, không có phần mở rộng Python không chuẩn khác. Tôi cũng mở ra bất kỳ đề xuất nào liên quan đến thiết kế hoặc kiến trúc của chương trình này.
Xin lỗi vì sự phản hồi muộn của mọi người. Tôi đã có một dự án mới, khẩn cấp mà tôi đang làm việc, và phải đặt nó vào thùng rác. Hiện tại, tôi đang mắc kẹt giữa câu trả lời của Công và Emilio. Tôi có lẽ sẽ dựa nhiều hơn vào việc triển khai các ctypes của Công, nhưng tôi vẫn thực sự thích phương pháp phân tích cú pháp bằng cách sử dụng 're'. Cảm ơn những ý tưởng tuyệt vời tất cả mọi người! –